Я создал страницу под названием functioncalling.php, которая содержит две кнопки: Submit и Insert. Я хочу проверить, какая функция выполняется при нажатии на кнопку. Я хочу, чтобы вывод появлялся на той же странице. Поэтому я создал две функции, по одной для каждой кнопки.
<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 "Вызывается функция select.";
}
function insert(){
echo "Вызывается функция insert.";
}
?>
Проблема в том, что я не получаю никакого вывода после нажатия на любую из кнопок. Где именно я ошибаюсь?
Ответ 1
Здесь необходим Ajax. Пожалуйста, обратитесь к приведенному ниже коду для получения более подробной информации. Измените вашу разметку следующим образом:
HTML
<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 " Вызывается функция select.";
exit;
}
function insert() {
echo " Вызывается функция insert.";
exit;
}
?>
Ответ 2
Нажатие на кнопку происходит на стороне клиента, в то время как 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){
// Некоторый код
}
?>
Ответ 3
Вы не можете вызывать функции PHP, такие как нажатие на кнопку, из HTML. Потому что HTML находится на стороне клиента, а PHP работает на стороне сервера. Вам нужно либо использовать Ajax, либо сделать это так, как в приведенном ниже фрагменте кода:
<?php
if ($_GET) {
if (isset($_GET['insert'])) {
insert();
} elseif (isset($_GET['select'])) {
select();
}
}
function select() {
echo " Вызывается функция select.";
}
function insert() {
echo " Вызывается функция insert.";
}
?>
Вы должны разместить данные формы, а затем проверить, нажата ли соответствующая кнопка.
Ответ 4
Вы можете написать так на 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";
// Некоторый код
}
}
?>
Ответ 5
Вы можете просто сделать это в php, для этого можно определить нажатие кнопки с помощью функции:
if(isset($_Post['button_tag_name']){
echo "Button Clicked";
}
Для этого вы должны изменить свой код следующим образом:
<?php
if(isset($_Post['select']){
echo "Кнопка select нажата и должен быть выполнен метод select";
}
if(isset($_Post['insert']){
echo "Нажата кнопка insert и должен быть выполнен метод insert";
}
?>
<!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>
<script>
//Это будет обработано на стороне клиента
function insert(){
window.alert("Вы кликнули на кнопке insert");
}
function select(){
window.alert("Вы кликнули на кнопке insert");
}
</script>
</body>
</html>
Web