通过javascript提交表单时,IE中的访问被拒绝错误

时间:2012-12-01 02:44:03

标签: javascript jquery asp.net-mvc file-upload

@using (Html.BeginForm("Upload", "MyProfile", FormMethod.Post, new
{
    @encType = "multipart/form-data",
    id = "ImgForm",
    name = "ImgForm",
    target = "UploadTarget"
}))
{   
    <input type="file" name="FileUpload" class="filestyle-notext fileupload">                
}

<iframe id="UploadTarget" name="UploadTarget" style="position: absolute; left: -999em; top: -999em;"></iframe>

通过javascript / jquery,我正在对文件输入的更改进行表单提交。

$('.myprofile .fileupload').change(function () {       
    $('#ImgForm').submit();
});

它抛出一个错误:访问被拒绝,它只在IE中发生(我正在使用ie8)并在firefox,chrome中正常工作。

在论坛阅读后,我发现由于安全原因,在IE中通过javasript提交表单存在问题,但有没有解决方法?而且我不明白为什么只有IE才会在所有浏览器支持它的时候做到这一点。 IE比所有浏览器更安全吗? ;)请提出您的建议。

1 个答案:

答案 0 :(得分:10)

IE8不支持从此文件输入的.submit()事件中调用包含文件输入的表单的.change()事件。这是出于安全原因。您试图在没有用户明确允许的情况下向服务器提交文件。一种可能的解决方法是在您放置的某个按钮的.click()事件中调用表单上的.submit()

$('.uploadButton').click(function () {       
    $('#ImgForm').submit();
});

现在,当用户点击某个上传按钮时,表单将会提交。

值得一提的是,这只是IE8的问题。更高版本和其他浏览器没有此限制。

另外,您可以考虑使用基于Flash的上传控件(例如UploadifyBlueImp File upload)以跨浏览器的方式将文件上传到服务器。