【问题标题】:Access denied error in IE when submitting form through javascript通过javascript提交表单时IE中的访问被拒绝错误
【发布时间】:2012-11-19 07:14:03
【问题描述】:
@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 比所有浏览器都安全吗? ;) 请收集您的建议。

【问题讨论】:

  • 我的第一个想法是禁用保护模式。
  • IE 比所有浏览器都更安全吗? 哈哈……厚脸皮。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 值得注意的是,这仍然是 IE10 中的一个问题,试图欺骗它是行不通的。不能通过代码调用点击事件。
猜你喜欢
  • 1970-01-01
  • 2012-10-06
  • 2013-12-20
  • 2015-01-09
  • 2011-09-26
  • 1970-01-01
  • 2011-07-31
  • 2012-08-30
  • 1970-01-01
相关资源
最近更新 更多