Как получить функцию php на стороне клиента? - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь выполнить функцию PHP (на стороне сервера) при нажатии кнопки в html (на стороне клиента).Я хочу передать параметр в функцию PHP как name , а взамен я хочу вывести как Hello name.Я пытался, но он не показывает,

На стороне сервера
Имя PHP-файла: " name.php " с функцией greet() с параметром $name выглядит следующим образом:

<?php
function greet($name)
{
   echo "hello $name";
}
?>

на стороне клиента
HTML-файл состоит из кнопки «Нажмите меня», которая должна отправить имя John на страницу PHP,и функция greet() должна выполняться, а вывод должен отображаться на стороне клиента как «Hello John» следующим образом:

<html>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function()
{
  $("#button").click(function(){
    $.ajax({
      type: "POST",
      url: "name.php",
      data: { name: "John" }
    }).done(greet(data) 
    {
      alert( "Data Saved: " + data);
    }); 
 });
});
</script>

<input type="button" id="button" value="Click me">

</html>

Я использовал Ajax-метод для вызова функции PHP, если какой-либо другой метод POST может выдавать выходные данные, тогда, пожалуйста, дайте мне знать.
Может кто-нибудь помочь, как получить вывод из функции PHP на стороне клиента при нажатии кнопки.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы не можете вызывать функцию PHP из JavaScript, даже из Ajax. Что делает Ajax, так это запрашивает данные, которые выводятся из файла PHP. Таким образом, вам нужно будет вызвать функцию в вашем name.php, которая выдает результат - который вы затем можете распечатать на PHP.

Ajax будет извлекать только строку, напечатанную из PHP.

Также обратите внимание, что вам не нужно закрывать PHP, выполнив ?> в конце файла, если только после этого не будет HTML или подобного.

На стороне сервера, вы будете делать что-то вроде этого

<?php
// Define the function
function greet($name) {
   return "Hello $name";
}

// Call the function with the value sent from Ajax - this output is what Ajax fetches
echo greet($_POST['name']);

На стороне клиента вы бы сделали что-то вроде

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
    $("#button").on("click", function() {
      $.ajax({
        type: "POST",
        url: "name.php",
        data: { name: "John" }
      }).done(data) {
        alert("Data Saved: " + data);
      }); 
    });
</script>

<input type="button" id="button" value="Click me">

Тогда data будет содержать всю строку, которая была напечатана из вашего PHP-файла. Если вы ожидаете массив, вам нужно преобразовать его в JSON.

0 голосов
/ 08 марта 2019

Сначала вам нужно привязать ваш вызов ajax к нажатию кнопки, поэтому при нажатии кнопки он вызовет вызов ajax.

$(document).ready(function()
{
// when button click it will trigger ajax call
 $("#button").click(function(){
     $.ajax({
         type: "GET",
         url: "name.php",
         data: { name: "John" },
         success: function(data) {
            // on successfull return it will alert the data 
            alert("Data saved: " + data);
         }    
      });
  });
});

И в вашем name.php

 <?php
    // get your data you send from ajax 
   $name = $_GET['name'];
   // it will echo the "hello $name" and return it
   greet($name);

   function greet($name)
   {
     echo "hello $name";
   }
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...