在上一次成功完成后如何让ajax调用

时间:2010-04-15 04:28:36

标签: jquery

我目前正在使用这个ajax排队插件http://www.onemoretake.com/2009/10/11/ajaxqueue-and-jquery-1-3/并且它工作正常,除非我们调用ajax,ajax调用2启动,这取决于ajax 1完成时成功函数生成的值。 / p>

当前一个调用完成并且运行了成功函数时,有没有办法启动所有ajax调用?

感谢


我对它有点工作.. clientid触发ajax并返回一个JSON结构...填充构建下拉列表,构建触发器调用另一个ajax但是在第一次ajax调用之后但在成功函数完成之前触发..使用延迟是不可靠的..任何想法?

var body = $('body');
body.queue('bodyQueue', function(){ $('#Client_ID').trigger('change');  $(this).dequeue('bodyQueue');}).delay(1000, 'bodyQueue');

body.queue('bodyQueue', function(){ $('#Building_ID').trigger('change');  $(this).dequeue('bodyQueue');});
body.dequeue('bodyQueue');

更好的是,如果我可以停止并启动ajax队列,那会更好,这可能吗?

2 个答案:

答案 0 :(得分:0)

jQuery的AJAX库支持完成处理程序(success)。将第二个AJAX调用放在第一个调用的success方法中,依此类推。

答案 1 :(得分:0)

感谢队友..

它围绕代码生成器构建

像这样解决它..

然后在ajax和函数执行它所做的之后它调用触发器传递ID,触发下一行.. bit dodgy ..但是工作

  triggerQ = [];
    triggerQ.push("Client_ID");
    triggerQ.push("Building_ID");
triggerNext();});

    function triggerNext(id){
    var trigger;
    if (id) {
        for(i=0;i<triggerQ.length;i++) {
            if (triggerQ[i] == id)  {
                if (triggerQ[i+1]) {
                    trigger =triggerQ[i+1];
                }
            }
        }
    } else {
        trigger = triggerQ[0];
        }
    if (trigger) $('#'+trigger).trigger('change');
    }