在IE8中,$ .parseJSON返回undefined

时间:2014-01-03 22:39:16

标签: javascript jquery ajax json internet-explorer-8

这是我遇到过的最奇怪的错误。

我提交了一个可以检索一些数据的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将正确显示数据,我想出了为什么它是未定义的。谢谢你的帮助!

2 个答案:

答案 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,则返回的对象已经是对象。


将此更新为更通用的答案。