这是我遇到过的最奇怪的错误。
我提交了一个可以检索一些数据的ajax POST。
$.ajax({
url: url,
data: data,
type: 'POST',
success: function(data){
console.log(data)
},
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}
)
在其他版本的IE和Chrome中,代码可以正常工作,并且data
的值为{"success": true}
。
但在IE8中,data
会返回undefined
。但是,如果我执行JSON.stringify(data)
,则会返回{"success":true}
。
我尝试通过$.parseJSON(JSON.stringify(data)
将返回的字符串转换为对象,但它又返回了undefined
。
我可以做些什么来将响应数据作为对象获取,就像我通常在其他浏览器中一样?
编辑:!!找到了解决方案。显然,IE11的IE8仿真是完全废话,无法正确显示数据。在虚拟机上使用IE8将正确显示数据,我想出了为什么它是未定义的。谢谢你的帮助!
答案 0 :(得分:1)
找到解决方案!显然,IE11的IE8仿真是完全废话,无法正确显示数据。在虚拟机上使用IE8将正确显示数据,我想出了为什么它是未定义的。谢谢你的帮助!
答案 1 :(得分:0)
我不确定你是否需要在IE8中这样做。以下是一些代码,我在IE8上使用jQuery 1.10.2在网站上成功使用:
$.ajax({
type: "POST",
crossDomain: true,
url: 'http://example.com/service/url',
data: params,
dataType: 'json',
timeout: 10000
})
.done(function( data ) {
console.log("Success");
console.log(data.success);
})
.fail(function( data ) {
console.log("Rejected");
console.log(JSON.stringify(data));
});
希望这个示例有助于您了解如何处理jQuery回调。如果结果实际上是有效的JSON,则返回的对象已经是对象。
将此更新为更通用的答案。