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事件,直到完成为止,但这些请求都不会相互干扰。
答案 0 :(得分:0)
这一切都取决于您的浏览器,并行HTTP请求的最大数量,如此处所示:Official references for default values of concurrent HTTP/1.1 connections per server?我无法找到最新的参考,所以如果遇到任何我很乐意看到它!
希望这有帮助。