1

在所有其他浏览器中,多重上传表单都有效。只有IE不喜欢它。当我尝试提交表单时,IE 会在 action="" 属性的页面上启动 302 重定向。重定向将转到我网站的根目录。

我已经用 iframe/textarea 试过了,但这也行不通。我在 IE7、IE8、IE9 上测试它。

4

1 回答 1

0

在这里阅读。

这个问题已经在github上讨论过了。

然后它有助于准确了解插件在做什么。由于 IE < 10 不支持 ajax 文件上传,该插件通过提交原始表单以及针对动态创建的 iframe 的响应来模拟用户体验。当 iframe 加载服务器响应时,插件会提取响应并调用回调处理程序。

如果服务器响应的标头内容类型设置为“application/json”,则会触发 IE 的默认下载行为。为避免这种情况,请勿将 content-type 标头设置为“application/json”。将其保留为 text/html 或 text/plain。

如果服务器发生实际错误,它将返回一个错误响应页面,并在响应标头中设置适当的状态代码。这给插件带来了两个问题:

  1. 它无法访问响应标头
  2. 它无法从响应正文中确定请求是否成功

如果您可以控制错误响应页面,一个潜在的解决方案是在插件将查找的 body 元素上添加属性。该插件将尝试访问响应正文元素上的“status”和“statusText”属性。因此,如果您的错误页面包含类似的内容,那么您的错误处理程序将被触发。

只需要对 IE 做一些小改动

  1. 使用 text/html 或 text/plain 而不是 'application/json'。
  2. 完全控制错误响应,在成功响应正文中添加错误消息,然后提取并处理。

IE9 中的 jQuery 表单插件中没有 JSON 响应

于 2013-10-14T12:05:34.383 回答