IE7和8中的jQuery JSON问题,而不是FF或Chrome(已经检查了额外的逗号!)

时间:2010-11-05 15:21:18

标签: jquery ajax json internet-explorer

我有一个恼人的问题,一个ajax上传脚本在IE7和8中抛出错误。我查看了我的代码,看不出问题是什么。错误如下:

消息:'result.filename'为null或不是对象

JSON响应是: responseText = { “结果”:{ “成功”:真, “文件名”: “autechrea8d7909a2e964c36e04d9f53eea54f6c”}, “ID”:98}

我可以在其他浏览器中访问responseText.result.filename - 知道可能导致IE问题的原因吗?

提前致谢!

编辑:这是我正在访问JSON响应的上下文:

var uploader = new qq.FileUploader({
                element: document.getElementById('file-uploader'),
                action: '<?php echo url::base(TRUE) ?>page_images/create/' + page_id,
                debug: true,
                onComplete: function(id, fileName, responseJSON){
                    path = '/media/images/main_images/new_uploads" ?>';
                    path = path + '/' + String(responseJSON.result.filename) + '.jpg';
                    $('.page_images').prepend(
                    '<li style = "float:left; display: inline; margin-right: 5px; width: 110px; height: 140px;">' +
                    '<img src = "' + path + '" width = "100" height = "100" />' +
                    '<br />' +
                    '<a href= "/page_images/delete/' + responseJSON.id + '">' +
                    '<img src= "/media/images/icons/cross.png" alt="Delete" title="Delete" />' +
                    '</a>' +
                    '</li>');
                    deleteHandler();
                }
        }); 

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,在你的Action中,你返回你的Json结果,将你的内容类型更改为“text / html”,如下所示:

        return Json(new { success = false }, "text/html");

无论出于何种原因,IE都不喜欢它。

答案 1 :(得分:0)

此行中是否有拼写错误,或者你真的想要双引号和“?&gt;”在path

path = '/media/images/main_images/new_uploads" ?>';

另外,你真的应该声明你所有的变量。我想你想要这样的东西:

var path = '/media/images/main_images/new_uploads';

当注入HTML时,可能是混乱的双引号混淆了IE。它不像IE错误消息那样有用。

我还建议您仅使用String(responseJSON.result.filename)替换responseJSON.result.filename以减少噪音。

除此之外,我建议您仔细查看您正在预先添加的HTML内容。您还可以内联JSON数据并查看会发生什么。