使用dojo.io.frame.send进行文件上传第一次在IE中不起作用

时间:2012-01-12 20:16:35

标签: javascript ajax dojo

我正在尝试使用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”参数。

1 个答案:

答案 0 :(得分:0)

我通过在服务器上明确地将http响应内容类型设置为“text / html”来使其在IE 8中工作。很奇怪,IE 9,FF和Chrome提供了这种灵活性,但IE更加严格。