Rails AJAX多个同时PUT调用失败

时间:2013-02-12 20:51:38

标签: jquery ruby-on-rails ruby ajax

My Rails应用程序在一个页面上包含多个表单,这些表单都与同一个控制器相关(实际上是相同的关联)。我有一个提交按钮,它使用jQuery通过AJAX一次提交所有表单。问题是只有部分更新实际显示为在数据库中生效。它们都使用相同的逻辑和相同的方法,一次一个,数据仍然很好。但是所有发送的,只有大约一半的数据实际上保存在数据库中。

Javascript看起来像这样:

$(document).on('click', '.submit', function(event){
  $('form').submit();
});

所以只需点击一下即可通过AJAX提交所有表格。 (图约10种形式)

Rails控制器看起来像这样(简化):

#prepare the JSON data

adapter = DataMapper.repository(:default).adapter
adapter.execute("UPDATE person SET facets=? WHERE id=?", JSON.generate(facets), id)

render :text => 'OK'

我认为问题可能涉及这样一个事实,即多个进程正在尝试同时访问该方法并使用旧数据更新该字段。我得到每个请求的响应'ok',但只有大约一半的结果生效。

有什么建议吗?谢谢!

编辑:

就像更新一样,如果有人遇到同样的问题。我通过将async设置为false来修复jQuery中的问题。这会使浏览器发送一段时间并且可能会阻止其他javascript事件,直到完成为止,但这些请求都不会相互干扰。

1 个答案:

答案 0 :(得分:0)

这一切都取决于您的浏览器,并行HTTP请求的最大数量,如此处所示:Official references for default values of concurrent HTTP/1.1 connections per server?我无法找到最新的参考,所以如果遇到任何我很乐意看到它!

希望这有帮助。