Я создал страницу под названием functioncalling.php, которая содержит две кнопки, Отправить и Вставить. Как новичок в PHP, я хочу проверить, какая функция выполняется при нажатии кнопки. Я хочу, чтобы вывод пришел на той же странице. Поэтому я создал две функции, по одной для каждой кнопки. Исходный код для functioncalling.php выглядит следующим образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<form action="functioncalling.php">
<input type="text" name="txt" />
<input type="submit" name="insert" value="insert" onclick="insert()" />
<input type="submit" name="select" value="select" onclick="select()" />
</form>
<?php
function select(){
echo "The select function is called.";
}
function insert(){
echo "The insert function is called.";
}
?>
Проблема здесь в том, что я не получаю вывод после нажатия любой из кнопок.
Где именно я иду не так?
Ответ 1
Нажатие кнопок осуществляется на стороне клиента, тогда как PHP выполняется на стороне сервера, но вы можете добиться этого с помощью Ajax:
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
В вашем PHP файле:
<?php
function abc($name){
// Your code here
}
?>
Ответ 2
Да, вам нужен Ajax здесь. Пожалуйста, обратитесь к приведенному ниже коду для более подробной информации.
Измените свою разметку, как это
<input type="submit" class="button" name="insert" value="insert" />
<input type="submit" class="button" name="select" value="select" />
JQuery:
$(document).ready(function(){
$('.button').click(function(){
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response) {
// Response div goes here.
alert("action performed successfully");
});
});
});
В ajax.php
<?php
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'insert':
insert();
break;
case 'select':
select();
break;
}
}
function select() {
echo "The select function is called.";
exit;
}
function insert() {
echo "The insert function is called.";
exit;
}
?>
Ответ 3
Вы должны сделать кнопку вызова той же страницы и в разделе PHP проверить, была ли нажата кнопка:
HTML:
<form action="theSamePage.php" method="post">
<input type="submit" name="someAction" value="GO" />
</form>
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
{
func();
}
function func()
{
// do stuff
}
?>
Ответ 4
Вы не можете вызывать функции PHP, такие как нажатие кнопки в HTML. Потому что HTML находится на стороне клиента, а PHP работает на стороне сервера.
Либо вам нужно использовать Ajax, либо сделать это как в фрагменте кода ниже.
<?php
if($_GET){
if(isset($_GET['insert'])){
insert();
}elseif(isset($_GET['select'])){
select();
}
}
function select()
{
echo "The select function is called.";
}
function insert()
{
echo "The insert function is called.";
}
?>.
Вы должны опубликовать данные своей формы, а затем проверить наличие соответствующей кнопки, на которую нажали.
Ответ 5
Чтобы показать $ сообщение в вашем входе:
<?php
if(isset($_POST['insert'])){
$message= "The insert function is called.";
}
if(isset($_POST['select'])){
$message="The select function is called.";
}
?>
<form method="post">
<input type="text" name="txt" value="<?php if(isset($message)){ echo $message;}?>" >
<input type="submit" name="insert" value="insert">
<input type="submit" name="select" value="select" >
</form>
Чтобы использовать functioncalling.php в качестве внешнего файла, вы должны как-то включить его в ваш HTML-документ.
Ответ 6
Попробуйте следующее:
if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
insert();
}
Ответ 7
Вы можете написать так в JavaScript или JQuery Ajax и вызвать файл
$('#btn').click(function(){
$.ajax({
url:'test.php?call=true',
type:'GET',
success:function(data){
body.append(data);
}
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<form method='get' >
<input type="button" id="btn" value="click">
</form>
<?php
if(isset($_GET['call'])){
function anyfunction(){
echo "added";
// Your funtion code
}
}
?>
Ответ 8
Атрибут onclick
в HTML вызывает функции JavaScript, а не функции PHP.
Ответ 9
Используйте рекурсивный вызов, когда действие формы вызывает сам вызов. Затем добавьте PHP-код в ту же форму, чтобы поймать его. В foo.php
ваша форма вызовет foo.php
на post
<html>
<body>
<form action="foo.php" method="post">
После того, как форма была отправлена, она будет называть себя (foo.php
), и вы можете поймать ее через предопределенную переменную PHP $_SERVER
, как показано в приведенном ниже коде
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "caught post";
}
?>
</form>
</body>
</html>
Ответ 10
Я застрял в этом, и я решил это с помощью скрытого поля:
<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>
В value
вы можете добавить все, что вы хотите добавить.
В test.php вы можете получить значение через $_Post[ID]
.
Ответ 11
Вот пример, который вы могли бы использовать:
<html>
<body>
<form action="btnclick.php" method="get">
<input type="submit" name="on" value="on">
<input type="submit" name="off" value="off">
</form>
</body>
</html>
<?php
if(isset($_GET['on'])) {
onFunc();
}
if(isset($_GET['off'])) {
offFunc();
}
function onFunc(){
echo "Button on Clicked";
}
function offFunc(){
echo "Button off clicked";
}
?>
Ответ 12
im не уверен, что php попробует просто
<html>
<head>
<script>
function insert()
{
document.getElementById("demo").innerHTML="The insert function is called";
}
function select()
{
document.getElementById("demo").innerHTML="The select function is called.";
}
</script>
</head>
<body>
<form>
<input type="text" name="txt" />
<input type="button" name="insert" value="insert" onclick="insert()" />
<input type="button" name="select" value="select" onclick="select()" />
</form>
<p id="demo"></p>
</body>
</html>
Ответ 13
<input type="button" name="insert" value="insert" onclick="insert()" />
<input type="button" name="select" value="select" onclick="select()" />
Измените свое на это, оно должно работать.