在AJAX请求上解析错误jQuery回调

时间:2014-09-01 16:45:12

标签: javascript php jquery ajax cakephp

我的AJAX请求一直收到类似于这个的回调错误:

parsererrorError: jQuery21107497704593028268_1409589069770 was not called [object Object

我尝试了各种方法,但我对jQuery / AJAX还不熟悉。 这是我的要求:

$.ajax({
    type: 'GET',
    dataType: 'jsonp',
    crossDomain: true,
    url: DEV_SERVER + "/check_in/add",
    beforeSend: function() {$.mobile.loading('show'); allow_action=false;},
    complete: function() {$.mobile.loading('hide'); allow_action=true;},
    timeout: 10000,
    data: {
        time: timestamp,
        bac: 0.01,
        offender_id: offender_id,
        latitude: lat,
        longitude: lon,
    },
    success: function(data){
        if(data.success){
            // TODO
            alert("success");
        } else {
            // TODO
            alert("error");
        }
    },
    error: function(jqXHR, status, error){
        //TODO
        alert(status + error + jqXHR);
        console.log(jqXHR);
    }
});

在服务器端,我回复:

$return = $_REQUEST['callback'] . '(' . json_encode($res) . ')';
echo $return;

非常感谢任何帮助

4 个答案:

答案 0 :(得分:0)

如果:

 url: DEV_SERVER + "/check_in/add?callback=?"

 $return = $_GET['callback']."('".json_encode($res)."')";

然后尝试一些实验:

 $return = '<script>'.$_GET['callback']."('".json_encode($res)."');</script>";

答案 1 :(得分:0)

这里有很多明显的问题。

data: {
        time: timestamp,
        bac: 0.01,
        offender_id: offender_id,
        latitude: lat,
        longitude: lon,
    },

删除longitude: lon,

后的逗号

其次,您已经说过返回的数据将是JSON数据结构dataType: 'jsonp',但您没有返回有效的JSON数据结构。尝试更改PHP脚本,如下所示: -

// assuming $res is an array
$res['callback'] = $_REQUEST['callback'];

$return = json_encode($res);
echo $return;

现在它可能是一个有效的JSON结构。

答案 2 :(得分:0)

这不是一个有效的json,这是一个明显的问题。

$return = $_REQUEST['callback'] . '(' . json_encode($res) . ')';
echo $return;

您必须只返回一个json编码的字符串作为输出。

只需使用: -

echo json_encode($res);
exit;

答案 3 :(得分:0)

我的问题是我没有在我的cakephp代码中禁用默认布局和视图。添加此&#34; $ this-&gt; autoRender = false;&#34;因为我的add()函数中的第一行代码解决了这个问题。我之前曾尝试在控制器中禁用它,但只需要为该功能禁用它。