订购Ajax调用

时间:2011-12-13 13:28:49

标签: ajax list jquery

我希望正在进行的ajax调用按特定顺序进行,让我使用一些代码进一步解释。

var feed_urls = [
                       'URL_1',
                       'URL_2',
                       'URL_3',
                       ...
                       ...

                       'URL_N',
                       ];

我正在使用jquery的getJSON方法进行ajax调用

$.each(feed_urls,function(index,value){
                        $.getJSON(value, function(data) {
                            $.each(data.feed.entry,function(i,val){
                                   LIST.push(val.content.src);
                            });
                        });
                });

我面临的问题是,由于ajax调用是异步的,因此LIST的内容并不总是以相同的顺序。反正有没有解决这个问题?

ajax调用的首选顺序为URL_1,然后是URL_2,后跟URL_3,依此类推,直至URL_N

2 个答案:

答案 0 :(得分:2)

最简单的解决方案是在URL1完成后才启动URL2请求:

function get(n,callback) {
  if (n == feed_urls.length) callback();
  $.getJSON(feed_urls[n], function(data) {
    $.each(data.feed.entry,function(i,val){
      LIST.push(val.content.src);
    });
    get(n+1,callback);
  });
}

get(0,function(){
  // This is called when all lists have been loaded.
  alert(LIST);
});

答案 1 :(得分:0)

使用带有async:false的ajaxSetup(),其中包含:

$.ajaxSetup(
    {
    data: "{}",
    async false,
..whatever else you need