我对ajax json响应有一个非常奇怪的问题。 json响应(jqXHR.responseJSON
)中的数据与字符串响应数据(jqXHR.responseText
)不匹配。 JSON字符串数据的请求没有任何错误(返回状态代码200 OK):
{"pdata":{"1":{"x":158,"y":545},"2":{"x":259,"y":179},"3":{"x":503,"y":77},"4":{"x":435,"y":528}},"status":"0","result":true}
我有用于控制台日志记录的简单代码:
var loadItemData = function(image) {
var data = {};
// Prepare request data
data.image = image;
data.token = $this.getOpt('token');
// Call image get data url
$.ajax({
url: $this.getOpt('image_get_data_url'),
type: 'post',
data: data,
dataType: 'json',
success: function(json, textStatus, jqXHR) {
console.log(jqXHR.responseText);
console.log(jqXHR.responseJSON);
console.log($.parseJSON(jqXHR.responseText));
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
};
上面的ajax成功回调的控制台输出是: 问题是,为什么responseJSON与responseText具有不同的数据,为什么手动解析responseText可以提供正确的数据输出? 在测试服务器上部署更改后,我注意到了这个问题,而在本地主机(WAMP服务器)上没有这个问题。使用Firefox 66.0.5(32位)。其开发人员工具会在“网络”标签中显示此请求的正确数据。