Javascript 在AJAX请求上解析错误jQuery回调
我在AJAX请求中不断收到与此类似的回调错误: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 + "/
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;