Вопрос:
Я создал страницу под названием 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.»; } ?>
Проблема здесь в том, что я не получаю вывод после нажатия любой из кнопок.
Где именно я иду не так?
Лучший ответ:
Нажатие кнопок осуществляется на стороне клиента, тогда как 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 } ?> Ответ №1
Да, вам нужен 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; } ?> Ответ №2
Вы должны сделать кнопку вызова той же страницы и в разделе 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 } ?> Ответ №3
Вы не можете вызывать функции 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.»; } ?>.
Вы должны опубликовать данные своей формы, а затем проверить наличие соответствующей кнопки, на которую нажали.
Ответ №4
Чтобы показать $ сообщение в вашем входе:
<?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-документ.
Ответ №5
Попробуйте следующее:
if($_POST[‘select’] and $_SERVER[‘REQUEST_METHOD’] == «POST»){ select(); } if($_POST[‘insert’] and $_SERVER[‘REQUEST_METHOD’] == «POST»){ insert(); } Ответ №6
Вы можете написать так в 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 } } ?>Ответ №7
Атрибут onclick в HTML вызывает функции JavaScript, а не функции PHP.
Ответ №8
Используйте рекурсивный вызов, когда действие формы вызывает сам вызов. Затем добавьте 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> Ответ №9
Я застрял в этом, и я решил это с помощью скрытого поля:
<form method=»post» action=»test.php»> <input type=»hidden» name=»ID» value»»> </form>
В value вы можете добавить все, что вы хотите добавить.
В test.php вы можете получить значение через $_Post[ID].
Ответ №10
Вот пример, который вы могли бы использовать:
<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»; } ?> Ответ №11
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> Ответ №12<input type=»button» name=»insert» value=»insert» onclick=»insert()» /> <input type=»button» name=»select» value=»select» onclick=»select()» />
Измените свое на это, оно должно работать.