2011-10-20 78 views
0

我有一个jQuery Ajax函数,它向服务器请求数据。jquery Ajax加载顺序

代码查找所有跨度,获取它们的ID并将其发送到json.php以获得结果。每个id返回一个不同的值,它们的加载时间是不同的。说一个瞬间加载,另一个在10秒内加载。

什么错:好的,一旦页面加载,所有的请求都发送到json.php,但是如果第三个span将立即返回一个结果,它会为前两个加载首先等待!

场景:我有3个跨度,第一个必须在9秒内返回,第二个必须在4秒内返回,第三个必须在5秒内加载。 以下是发生的情况:第一个跨度在9秒后出现,秒跨度在9 + 4秒后出现,最后一个跨度在9 + 4 + 3秒内出现。

下面是代码:

<script> 
function getData(d){ 
    var r=Math.floor(Math.random()*500) 
    $('#'+d).addClass('load'); 
    var handler = ''; 
    $.get('json.php?request='+d+'&r='+r, function(data) { 
       var obj = jQuery.parseJSON(data); 
       for (var i = 0; i < obj.length; i++) { 
        var object = obj[i]; 
        for (property in object) { 
          handler = object[property]; 
           $('#'+d).removeClass('load'); 
           $('#'+d).html(handler); 
        } 
       } 
    }); 
    return true; 
} 

$(document).ready(function() { 
    $("span").each(function() {    
     getData($(this).attr('id')); 
    }); 
}); 
</script> 

      <span id="first_data"></span> 
      <span id="second_data"></span> 
      <span id="third_data"></span> 

这里有什么问题?

+0

我不明白你的问题。你问为什么三个Ajax调用的响应时间不同?你是问如何对ajax结果进行排序,以便按照特定顺序显示结果?你是问如何在跨度之间显示特定时间和顺序的结果? – jfriend00

+0

我希望每个跨度都相应地出现。例如跨度2仅需3秒即可加载,所以我希望结果在3秒内出现。跨度1需要20秒才能加载,所以我想要在20秒内出现...这里跨度2需要23秒,而不是3秒。而请求正在异步完成,所以我没有真正明白。 – Reza

+0

我建议在页面启动时查看Firebug中的Net面板(免费的Firefox附件),并查看浏览器是否持有ajax请求。 – jfriend00

回答

0
+0

Firefox 7&8 Beta。在我的情况3并发... – Reza

+0

顺便说一句,伟大的一点。不过,我在document.ready中调用了我的函数,确保所有其他请求都已完成加载。但我确定我有一个并发问题。 – Reza

+0

@Reza这不是关于其他请求完成加载,它只是关于能够有* n * Ajax请求悬而未决,但在FF7/8你得到两个以上,所以这是别的。 –