如何将值从PHP发送到jQuery:echo还是return?

时间:2010-08-12 10:17:23

标签: php jquery ajax

我只想在这里检查一下 - 您是否必须在PHP中回显值以通过(jQuery)XHR检索它们?

例如

PHP

public function processRequest() {

    //intercept AJAX requests
    if (!empty($_GET)) {

        if (isset($_GET['xhr'])) {
            if ($_GET['xhr'] == true) {
                //process AJAX

                //call relevant method
                echo json_encode(array('key' => 'value'));
                return;
            }
        }
    }

    //else proceed with regular output
    $this->render();
}

的jQuery

function doAjax(){

    $.ajax({
        url: "index.php?xhr=true",
        cache: false,
         dataType: 'json',
         success: function(data){
             console.log(data);
         }
    });
}

这将使用适当的值在Firebug控制台中记录json对象。 如果我尝试返回值而不是回显,我会得到nada。

3 个答案:

答案 0 :(得分:4)

他们必须回应在响应中,所以是的,他们必须在那里让jQuery看到它们......否则浏览器得到的响应将没有内容。

作为旁注,如果你想要的是检查它是否是来自jQuery的it already adds this header with every request的AJAX请求,你可以检查X-Requested-With: XmlHttpRequest标题,例如:

if($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){

答案 1 :(得分:0)

返回不会执行任何操作,因为您不在函数中,而是在单独的文件中。返回将优雅地停止执行。

您需要回显/打印javascript数据,以便在执行其http请求时读取它。它就像你拿走那个网址并在你的浏览器中打开它一样。

答案 2 :(得分:0)

响应将由呈现的页面组成,因此当您返回它时,它会在PHP文件中返回它,页面的实际呈现永远不会看到该值,因此jQuery也不会。

基本上,如果查看源代码,jQuery AJAX命令将显示浏览器将看到的内容。