我有一个恼人的问题,一个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();
}
});
答案 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数据并查看会发生什么。