1

所有,我知道已经有这个问题了: jquery file upload - IE done callback data.result issue

但是,我遇到了同样的问题,不知道如何解决。我有一些看起来像这样的工作代码(基于另一篇文章中的建议):

if($.fn.wl_File) $.fn.wl_File.defaults = {
    forceIframeTransport: true,
    onDone: function (e, data) {
    var result = jQuery.parseJSON(data.result);
    var filename = result[0].name;
    }
}

除了 IE 之外,它在 Firefox、Chrome 等中完美地提取了回调信息。但是,我仍然从 IE 中得到一个 [object Object]。当我console.log(data.result)在 Chrome 中执行时,我得到以下结果:

[{
"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"
}]

我不知道如何解决这个问题。根据我的代码,谁能指出我正确的方向?

仅供参考,我正在使用以下主题: http ://revaxarts-themes.com/?t= whitelabel 调用 jquery 上传插件,这就是为什么我的代码在顶部看起来有点不同,但它基本上与插件代码。

非常感谢您对这个令人沮丧的问题的任何帮助!

4

2 回答 2

2

我从我在问题中提到的帖子中找到了解决方案。但是,为了满足不同的浏览器,我不得不对其进行一些扩展。关于如何从 IE 获取数据的原始答案是正确的,但该方法不适用于其他浏览器。我必须添加一个 if 语句来查看我的浏览器类型并从那里继续。我处理这种情况的代码如下所示:

if($.browser.msie){
    var data_to_parse = $( 'pre', data.result ).text();
}else{
    var data_to_parse = data.result;
}
var result = jQuery.parseJSON(data_to_parse);
var filename = result[0].name;

我现在可以操纵从 IE 和其他浏览器获得的响应!

于 2012-07-12T16:34:10.963 回答
0

IE中的console.log不像其他浏览器那样神奇,输出对象Object是正常的。您可以做的是启动开发人员工具 (F12) 并在该行中添加一个断点:

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

有关如何调试的更多详细信息: 如何在 IE8 中转储 JavaScript 变量?

还值得一读,使用 firebug lite: jQuery logging in IE: how to get object?

于 2012-07-12T14:56:46.377 回答