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

Javascript 在AJAX请求上解析错误jQuery回调,javascript,php,jquery,ajax,cakephp,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 + "/

我在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;
非常感谢您的帮助

如果:

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

 $return = $_GET['callback']."('".json_encode($res)."')";
然后尝试一些实验:

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

这里有很多明显的问题

删除经度:lon后的逗号

其次,您说过返回的数据将是JSON数据结构数据类型:“jsonp”,但您没有返回有效的JSON数据结构。尝试如下更改PHP脚本:-

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

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

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

它不是一个有效的JSON,这是一个明显的问题

$return = $_REQUEST['callback'] . '(' . json_encode($res) . ')';
echo $return;
您必须仅返回一个json编码的字符串作为输出

只需使用:-

echo json_encode($res);
exit;

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

$res是一个数组,我按如下方式填充它:if$this->CheckIn->save$\u REQUEST{$res['success']=true;}else{$res['success']=false;}和this$return=$\u GET['callback']。json_编码$res;仍然返回一个类似的解析错误和-SyntaxError:missing;在声明107360738680254322_1409592670289{success:true}之前,请显示var_dump$res;和echo json_encode$res;echo json_encode$res给出:{success:true},echo var_dump$res给出:array1{[success]=>booltrue}这部分代码看起来不错,只是注释//超时-不需要它,因为它对ajax事务没有影响,如果注释//在发送之前//完成,请检查heppens。还可以尝试另一个版本的jquery,可能您的版本有一些bug。
echo json_encode($res);
exit;