Jquery Rails AJAX多个并发PUT调用失败
我的Rails应用程序在一个页面上包含多个表单,它们都与同一个控制器(实际上是同一个关联)相关。我有一个提交按钮,它使用jQuery通过AJAX一次提交所有表单。问题是,只有一些更新在数据库中实际显示为生效。它们都使用相同的逻辑和方法,一次一个,数据保持良好。但所有数据一次发送,实际上只有大约一半的数据保存在数据库中 Javascript如下所示:Jquery Rails AJAX多个并发PUT调用失败,jquery,ruby-on-rails,ruby,ajax,Jquery,Ruby On Rails,Ruby,Ajax,我的Rails应用程序在一个页面上包含多个表单,它们都与同一个控制器(实际上是同一个关联)相关。我有一个提交按钮,它使用jQuery通过AJAX一次提交所有表单。问题是,只有一些更新在数据库中实际显示为生效。它们都使用相同的逻辑和方法,一次一个,数据保持良好。但所有数据一次发送,实际上只有大约一半的数据保存在数据库中 Javascript如下所示: $(document).on('click', '.submit', function(event){ $('form').submit();
$(document).on('click', '.submit', function(event){
$('form').submit();
});
这样,只需单击一下,即可通过AJAX提交所有表单。(图约10张表格)
Rails控制器如下所示(简化):
我认为问题可能涉及多个进程试图同时访问该方法并使用旧数据更新字段的事实。对于每个请求,我都会得到“ok”的响应,但只有大约一半的结果生效
有什么建议吗?谢谢
编辑:
作为更新,以防任何人有同样的问题。我通过将async设置为false修复了jQuery中的问题。这会使浏览器发送的时间稍长,并且可能会在发送之前暂停其他javascript事件,但所有请求都不会相互干扰 这一切都取决于您的浏览器,并行HTTP请求的最大数量是有上限的,正如这里所问的:我无法找到最新的参考资料,因此如果您遇到任何问题,我很乐意看到
希望这能有所帮助。只是建议,您是否尝试按连续顺序调用form.submit()?我的意思是,发送ajax,等待“ok”响应,再发送一个ajax,等等,直到所有表单都处理完毕。嗯,我没想到会这样。我在看一个Ruby互斥体,但这样做似乎更简单。谢谢你的回复。
#prepare the JSON data
adapter = DataMapper.repository(:default).adapter
adapter.execute("UPDATE person SET facets=? WHERE id=?", JSON.generate(facets), id)
render :text => 'OK'