确定在JSON中为IE8解析的内容更少

时间:2012-07-11 22:37:21

标签: jquery json

全部, 我有以下代码:

onDone: function (e, data) {
var result = jQuery.parseJSON(data.result);
var uploadType = result.upload_type;
var filename = result.name;
var insert_id = result.insert_id;
}

当我运行此操作时,我从IE中收到以下错误:

Message: 'upload_type' is null or not an object

当我在Chrome中执行console.log(data.result)时,我得到以下数据:

 [{
    "name": "1_3266_671641333369_14800358_42187036_5237378_n.jpg",
    "size": 35535,
    "type": "image\/jpeg",
    "url": "\/web\/upload\/1_3266_671641333369_14800358_42187036_5237378_n.jpg",
    "thumbnail_url": "\/web\/upload\/thumbnails\/1_3266_671641333369_14800358_42187036_5237378_n.jpg",
    "delete_url": "\/web\/upload.php?file=1_3266_671641333369_14800358_42187036_5237378_n.jpg",
    "delete_type": "DELETE",
    "upload_type": "video_montage",
    "insert_id": "288"
}]

我试图了解为什么我在IE8中收到错误消息,但我看不到正在解析的内容。当我做了这样的警报时:

var result = jQuery.parseJSON(data.result);
alert(result)

我变得无效,但不明白为什么。

非常感谢任何帮助,如何阅读它或者为什么我解析的JSON的结果为空,即使我返回的字符串中有数据!

谢谢!

4 个答案:

答案 0 :(得分:2)

我终于找到了解决方案,这是一个问题,因为IE不支持XHR上传。您可以通过查看以下帖子找到详细解释:

jquery file upload - IE done callback data.result issue

但这并没有完全解决我的需求,因为该代码仅适用于IE,我需要跨浏览器工作。我稍微更新了我的代码,如果你在这里查看接受的答案:

jquery file upload - IE callback results in object Object

您将了解如何处理来自IE的JSON响应以进行XHR类型的上传!

答案 1 :(得分:1)

data.result已经是一个对象。

你得到null,因为当jQuery.parseJSON()的参数不是null

时,jQuery会返回string

答案 2 :(得分:0)

也许在IE中试试这个:

alert(data.result);

那应该给你JSON的字符串值。

答案 3 :(得分:0)

data.result 已经解析,不需要$.parseJSON。删除这一行:

var result = jQuery.parseJSON(data.result);

此外,您的JSON对象是一个(对象)数组。尝试从数组中的第一个对象获取属性。

var uploadType = data.result[0].upload_type;