【发布时间】:2020-04-16 10:41:56
【问题描述】:
今天我面临一个以前从未遇到过的奇怪问题。我的 ajax 调用返回状态为 200 的响应,但不知何故它总是触发错误事件而不是成功。这就是我正在做的事情
$.ajax({
type: "GET",
url: "swap.php",
data: "key=dbdcd39f0f8f5077e7308f3d3d5d8cac&code="+$("#code").val(),
contentType: 'application/json; charset=utf-8',
dataType:"json",
beforeSend: function() {
$("#msg").html("<img src='imgs/loading_circle.gif'/>");
},
success: function(result){
alert(result);
},
error: function(xhr,status,error){
alert(error.Message); // receiving Undefined message
}
});
swap.php的PHP代码
<?php
header('Content-Type: application/json');
$resp["data"]="Record updated successfully";
print json_encode($resp);
?>
这是我直接把网址放在地址栏时得到的响应
下面是chrome的network tab截图
【问题讨论】:
-
您是否使用 json_encode 发送响应?
-
否,但响应状态为 200,我正在做一些数据库工作,这些工作也根据提供的参数成功更新。
-
在 jQuery .ajax() 中,如果指定了 dataType: 'json' 设置,服务器必须返回一个有效的 JSON 格式的字符串,否则会抛出错误。
-
是的,试试这个方法 echo json_encode($resp);die;
-
这可能是跨域错误,因为在您的代码中我可以看到它正在将请求作为选项而不是 get 发送
标签: jquery json ajax error-handling undefined