我有一个包含多个表单的页面,我通过 Ajax POST 连续提交这些表单。起初,我尝试使用同步 XHR 请求,但这会导致浏览器在请求期间锁定,并破坏我的 DOM 操作效果,这是 Not Acceptable 。所以我最终使用的模式基本上是这样的:
var fcount = 0; // incremented for each form to be submitted
function submit_form( num ) {
var fdata = { ... }; // data from form # num
$.ajax( { async: true,
url: '/index.cgi',
data: fdata,
type: 'POST',
success: function() {
if ( num < fcount ) {
submit_form( ++num );
}
}
} );
}
$( '#submit_form_btn' ).click( function() { submit_form( 1 ) } );
我觉得递归对于本质上是迭代问题的解决方案有点丑陋。是否有更简洁或更优雅的方式来处理此问题?
最佳答案
这些请求是幂等的吗?如果是,您只需将它们一个接一个地解雇即可。否则,您会在某种程度上受到 AJAX 异步特性的限制。
更新
我做了更多研究,显然存在一个名为 jQuery Message Queuing 的框架通过消息队列处理串行 AJAX 请求。也许这可以帮助您。
关于javascript - 有没有更好的方法来串行提交多个 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2614839/