$.getJSON異步請求和同步請求


先看一段代碼:

for(var j=0;j<24;j++){
     (jQuery).getJSON('log_analyze.php',{r:Math.random(),logid:logid,op:2,j:j},function(data){
          if(data.success_agent){
              var width=j*10;
               $("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>");
              }
                   })
               }

這段代碼的意思是:請求log_analyze.php,每次請求成功后就把J加1,然后再去請求。

打開firebug,可以看到這24條數據是異步執行,所以我log_analyze.php獲取到得數據很混亂,沒有規律,怎么解決呢?

在執行之前加$.ajaxSettings.async = false;    (同步執行)

$.ajaxSettings.async = false; 
for(var j=0;j<24;j++){ (jQuery).getJSON('log_analyze.php',{r:Math.random(),logid:logid,op:2,j:j},function(data){ if(data.success_agent){ var width=j*10; $("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>");               }  }) }

在for循環之前加一個$.ajaxSettings.async = false;    表示同步執行,這樣他就會安裝順序執行了。

下面的是從網上摘過來的:

同時執行多個$.getJSON() 數據混亂的問題的解決

在執行之前加$.ajaxSettings.async = false;    (同步執行)
執行你的代碼之后及時恢復為$.ajaxSettings.async = true; (異步執行)
不然影響別的地方的需要異步執行的代碼。

example:

$.ajaxSettings.async = false;

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

......

$.ajaxSettings.async = true;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM