for loop ..等待AJAX​​请求

时间:2013-03-08 16:13:29

标签: jquery ajax

我正在使用下面的代码迭代一系列日期。每次,我发一个ajax请求并返回xml数据,然后调用一个函数在我的页面上的一行上显示一系列div。问题是我的循环在第一次ajax调用之前已经完成,如何在我的ajax请求和函数完成之前保持for循环?任何帮助非常感谢! ,谢谢

        // Start of the loop for the date range selected    

        for(loopTime = startTime; loopTime <= endTime; loopTime += 86400000)   {

        // Produce the day from the date 
                loopDate=new Date(loopTime) 
                day = loopDate.getDate() ;          if (day < 10) { day = "0" + day } ; 
                mon = loopDate.getMonth()+1   ; if (mon < 10) { mon = "0" + mon } ; 
                year = loopDate.getFullYear()       
                epDate = year + "-" + mon + "-" + day 

        // Run the XML Query ONCE ONLY 
              $.ajax({
                  type: "POST",
                  url: "php_assoc/jobs_today.php",
                  data: { OnThisDate : epDate },
                  dataType: "xml",
                  success:returnedXMLdata             
                  });

        }// for loop date




        function returnedXMLdata(data) {
            script .... 

2 个答案:

答案 0 :(得分:5)

你的问题可能不是循环早完成(这实际上是一件好事),但所有的AJAX请求几乎都会立即被解雇。

如果您希望将AJAX请求排入队列,则需要使用事件处理程序本身进行循环迭代,而不使用for

var loopTime = startTime;
(function iterate() {
    $.ajax(...).always(function() {
        loopTime += 86400 * 1000;
        if (loopTime <= endTime) {
            iterate();
        }
    });
})();

答案 1 :(得分:3)

在ajax请求中,添加一个async属性并将其设置为false。

async: false,