我正在尝试使用dojo.io.frame.send()进行ajax文件上传。它适用于FF和chrome,没有任何问题,但在IE 8中没有(不确定其他版本)。代码粘贴在下面:
function submitForm()
{
dojo.require("dojo.io.iframe");
dojo.io.iframe.send({
url : "/uploadfile.do",
form : "myForm",
method: "POST",
handleAs: 'text',
load : function(response, ioArgs)
{
return response;
},
error : function(response, ioArgs) {
return response;
}
});
return false;
}
我在网上搜索并发现了这个:
http://groups.google.com/group/dojo-interest/browse_thread/thread/17dace02652bcec3
这促使我在上面代码中的dojo.require()行之后添加以下代码段:
if ((dojo.isSafari || dojo.isIE) && dojo.io.iframe["_frame"])
{
dojo.destroy(dojo.io.iframe['_frame']);
var frameName = dojo.io.iframe._iframeName;
dojo.io.iframe["_frame"] = window[frameName] = null;
if (window.frames)
window.frames[frameName] = null;
}
有了它,它第一次在IE中不起作用,但是当我第二次点击上传按钮时起作用。
其他信息:我在HTML中的表单标记有method =“post”参数。
答案 0 :(得分:0)
我通过在服务器上明确地将http响应内容类型设置为“text / html”来使其在IE 8中工作。很奇怪,IE 9,FF和Chrome提供了这种灵活性,但IE更加严格。