javascript - 有没有更好的方法来串行提交多个 AJAX 请求?

标签 javascript jquery ajax recursion xmlhttprequest

我有一个包含多个表单的页面,我通过 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/

相关文章:

javascript - 使 WordPress 摘录的长度适应屏幕宽度

javascript - 以不同的速度滚动 div

php - 为什么 jQuery Ajax JSON 请求总是失败?

javascript - 获取图片alt,添加为父类

javascript - 使用工厂创建对象时使用哪些 JSDoc 标签,即 mylib.create()

javascript - 当弹出框指令工作时,什么会导致弹出框组件失败

javascript - 更改数组中的特定对象

javascript - 寻找罪魁祸首方法抛出 'undefined is not a function'

c# - 有什么方法可以将迭代的 id 传递给 jquery?

javascript - 如果元素存在则条件渲染