我的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;
非常感谢任何帮助
答案 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()函数中的第一行代码解决了这个问题。我之前曾尝试在控制器中禁用它,但只需要为该功能禁用它。