【问题标题】:How to get php function ouptut on client side?如何在客户端获取php函数输出?
【发布时间】:2019-03-08 06:10:57
【问题描述】:

我正在尝试在 html(客户端)中单击按钮时执行 PHP 函数(服务器端)。我想将参数作为 name 传递给 PHP 函数,作为回报,我希望输出为 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 函数获取输出到客户端。

【问题讨论】:

  • done(greet(data) - 你不能直接从 JS 调用 PHP 函数。当您对name.php 进行ajax 调用时。该文件(PHP 文件)需要调用该函数并将值返回给您的 ajax 回调。您的 ajax 响应将只是 PHP 文件中的输出数据,仅此而已。
  • 首先你需要调用你的ajax按钮点击移动你的ajax代码到$("#button").click(function(){ //yourajaxcode });
  • 如果您只想显示“Hello John”(或“Hello + 任何 $name 等于”)...您需要在客户端做任何事情吗?为什么你不能直接&lt;?php echo greet($name) ?&gt; in-line (改变“greet()”所以它只是连接字符串,而不是调用“echo”)????

标签: php ajax html client-server


【解决方案1】:

您不能从 JavaScript 调用 PHP 函数,即使是从 Ajax 也是如此。 Ajax 的作用是要求从 PHP 文件输出的数据。因此,您需要在 name.php 中调用该函数,它会给出输出 - 然后您可以在 PHP 中打印。

Ajax 只会获取从 PHP 打印的字符串。

另外请注意,您不需要通过在文件末尾执行 ?&gt; 来关闭 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。

【讨论】:

  • 感谢 Qirel,我使用了您提到的相同代码。我在服务器端和客户端创建了 html 文件中的 ajax 代码的 PHP 脚本。但它没有执行。
  • 在浏览器中检查控制台是否有客户端错误,并检查服务器上的 PHP 错误日志以获取线索。
  • 嘿 Qirel,正如你所说,我在控制台上检查并发现此错误,“访问 XMLHttpRequest at 'file:///C:/Users/niranjan.rao/Documents/Ampps/ www/name.php?name=John' from origin 'null' 已被 CORS 策略阻止:跨源请求仅支持以下协议方案:http、data、chrome、chrome-extension、https。" On客户端,在按钮的单击事件上,在 ajax 中,我将 php 文件路径作为 url 传递:"192.168.0.101:80/name.php" 在 url。
  • 只需 url: "/name.php", 即可,无需提供您的(本地)IP。
  • 感谢 Qirel,但您是否可以复制客户端脚本(在您的回答中提到)并将其保存在 " .html " ,然后在您单击的按钮上,ajax 代码将尝试访问我机器上的 php 页面,将执行该功能,输出将显示在您机器上的 HTML 页面中。
【解决方案2】:

首先你需要在你的按钮点击时绑定你的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);
         }    
      });
  });
});

以你的名字.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";
   }
 ?>

【讨论】:

  • 一个好的答案包括正确解释它解决了什么问题以及如何解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2021-10-22
相关资源
最近更新 更多