如何在客户端获取php函数输出?

时间:2019-03-08 06:10:57

标签: php html ajax html5 client-server

我试图在html(客户端)中单击按钮时执行PHP函数(服务器端)。我想将参数作为 name 传递给PHP函数,并且作为回报,我希望输出为Hello name。 我试过了,但是没有显示出来,

服务器端
具有功能greet()和参数$name的PHP文件名为“ name.php ”如下:

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

客户端
HTML文件由按钮“ Click me”组成,该按钮应将名称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>

如果其他任何POST方法可以提供输出,我已经使用Ajax方法来调用PHP函数,那么请告诉我。
有人可以帮忙如何通过单击按钮从PHP函数获取输出到客户端。

2 个答案:

答案 0 :(得分:1)

即使从Ajax,也不能从JavaScript调用PHP函数。 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。

答案 1 :(得分:0)

首先,您需要在单击按钮时绑定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";
   }
 ?>