使用 AJAX 从 PHP 文件中获取响应

Posted

技术标签:

【中文标题】使用 AJAX 从 PHP 文件中获取响应【英文标题】:Get response from PHP file using AJAX 【发布时间】:2013-02-01 19:56:04 【问题描述】:

所以这是我的问题,我正在使用 AJAX (jQuery) 将表单发布到 process.php,但页面实际上需要回显响应,例如 appleplum。我不确定如何从process.php 获取响应并将其存储为变量...

这是我目前的代码:

<script type="text/javascript">
        function returnwasset()
            alert('return sent');
            $.ajax(
                type: "POST",
                url: "process.php",
                data: somedata;
                success function()
                    //echo what the server sent back...
                
            );
        
    </script>

我还需要在 json 中回显 process.php 中的响应吗?还是纯文本没问题?

对不起,如果这听起来像一个愚蠢的问题,这是我第一次在 Ajax 中做这样的事情。

PS:上面代码中的POST请求如何命名?

【问题讨论】:

不是一个愚蠢的问题。 【参考方案1】:

&lt;?php echo 'apple'; ?&gt; 几乎可以满足您在服务器上的所有需求。

对于 JS 端,服务器端脚本的输出作为参数传递给成功处理函数,所以你有

success: function(data) 
   alert(data); // apple

【讨论】:

success function 成功后缺少:。您可以通过打开浏览器的 JS/调试控制台轻松检查语法错误。 谢谢!我将把它标记为答案,非常感谢(抱歉我明显的错误,我是 AJAX 新手)嗯,我在哪里命名发布请求,以便服务器将其识别为 $_POST['blah'] ? @MarcB : 我可以获取我在 process.php 中的变量值吗?? 我很惊讶发现“返回”只需要一个回声是多么困难。当我第一次尝试做 Ajax 时,我很难弄清楚这一点。但这很简单。许多教程跳过了这些重要信息,大概是因为他们认为这很明显,不需要说出来。 使用echo json_encode('apple'); 而不是echo 'apple';【参考方案2】:

好的做法是这样使用:

$.ajax(
    type: "POST",
    url: "/ajax/request.html",
    data: action: 'test',
    dataType:'JSON', 
    success: function(response)
        console.log(response.blablabla);
        // put on console what server sent back...
    
);

而php部分是:

<?php
    if(isset($_POST['action']) && !empty($_POST['action'])) 
        echo json_encode(array("blablabla"=>$variable));
    
?>

【讨论】:

我最同意这个答案。您还可以在响应中包含多个变量,例如array("blablabla"=&gt;$variable, "success"=&gt;true, "user_message"="hello"),然后只需在 JavaScript 中使用它们,例如response.success.【参考方案3】:
<script type="text/javascript">
        function returnwasset()
            alert('return sent');
            $.ajax(
                type: "POST",
                url: "process.php",
                data: somedata;
                dataType:'text'; //or HTML, JSON, etc.
                success: function(response)
                    alert(response);
                    //echo what the server sent back...
                
            );
        
    </script>

【讨论】:

感谢您的回答,我已经给了它一个赞成票,现在我只需要决定将谁标记为答案:) “能力越大,责任越大。” -本·帕克 抱歉,ethan,但由于 mark 先回答了它,我认为他值得我将其标记为答案,而且他后来指导我完成了。我还是给了你一个赞成票 :) 无论如何谢谢!【参考方案4】:

在您的 PHP 文件中,当您回显数据时使用 json_encode (http://php.net/manual/en/function.json-encode.php)

例如

<?php
//plum or data...
$output = array("data","plum");

echo json_encode($output);

?>

在您的 javascript 代码中,当您的 ajax 完成时,json 编码的响应数据可以变成这样的 js 数组:

 $.ajax(
                type: "POST",
                url: "process.php",
                data: somedata;
                success function(json_data)
                    var data_array = $.parseJSON(json_data);

                    //access your data like this:
                    var plum_or_whatever = data_array['output'];.
                    //continue from here...
                
            );

【讨论】:

【参考方案5】:
var data="your data";//ex data="id="+id;
      $.ajax(
       method : "POST",
       url : "file name",  //url: "demo.php"
       data : "data",
       success : function(result)
               //set result to div or target 
              //ex $("#divid).html(result)
        
   );

【讨论】:

如果你把“数据”当作一个字符串,那么实际的数据会怎么走?

以上是关于使用 AJAX 从 PHP 文件中获取响应的主要内容,如果未能解决你的问题,请参考以下文章

XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)

PHP、AJAX、HTML、MySQL,单击按钮从数据库中获取信息

使用 Ajax 和 JQuery 从 PHP 文件中获取数据

从 php 脚本获取响应

jQuery:从json响应中获取订单ID [重复]

如何在html中使用ajax方法从节点服务器获取响应