javascript - 使用 AJAX 从 jQuery 向 Rails 服务器提交表单在 IE11 中不起作用

标签 javascript jquery ruby-on-rails ajax paperclip

我正在尝试使用 AJAX 将一些数据从 from 上传到 Rails 服务器。该表单包含两个文本输入和一个文件输入。这是我的 submit 事件处理程序的样子:

$("form").on("submit", function(event) {

  event.preventDefault();

  $.ajax({
    url: $(this).attr("action"),
    type: $(this).attr("method"),
    data: new FormData(this),
    contentType: false,
    processData: false
  });
});

这在除 IE 之外的所有浏览器中都可以正常工作。当我尝试在 IE 中提交表单时,我的 Rails 服务器发出以下错误:

Unexpected error while processing request: bad content body
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/multipart/parser.rb:117:in `get_current_head_and_filename_and_content_type_and_name_and_body'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/multipart/parser.rb:19:in `block in parse'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/multipart/parser.rb:17:in `loop'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/multipart/parser.rb:17:in `parse'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/multipart.rb:25:in `parse_multipart'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/request.rb:377:in `parse_multipart'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/request.rb:203:in `POST'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:26:in `method_override'
        /Users/landonschropp/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:14:in `call'
        ...

对于为什么这可能不起作用的任何见解,我将不胜感激。

最佳答案

这可能是 IE10/11 表单数据序列化的错误。根据一篇博文,当最后一个可检查的输入未被检查时,这些版本的 IE 会破坏请求。

[1] http://blog.yorkxin.org/posts/2014/02/06/ajax-with-formdata-is-broken-on-ie10-ie11

关于javascript - 使用 AJAX 从 jQuery 向 Rails 服务器提交表单在 IE11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873846/

相关文章:

javascript - 原子 : Where is the list with all the default snippets?

jquery - 悬停和点击事件在响应式菜单中重叠

javascript - 如何完成JavaScript验证

ruby-on-rails - ActiveRecord 自动保存 :false doesn't appear to work

javascript - 调用函数而不将其结果分配给变量

javascript - 了解闭包及其作用域

ruby-on-rails - AuthLogic 表单给我不正确的验证错误——为什么?

ruby-on-rails - Cucumber:如何在 Rails 中切换 session (多 session )

javascript - 语法错误: unexpected token in Javascript/posting data to amazon s3

javascript - 在 jQuery 日期选择器 UI 上禁用/启用选定的日期范围