DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 淺析$.getJSON異步請求和同步請求
淺析$.getJSON異步請求和同步請求
編輯:關於JavaScript     

先說一下我遇到的問題吧,我之前的一個函數想調用上一個函數的返回值,但是它的返回值一直為空,後來翻了一些資料才明白是異步請求在作怪,不多說,看例子,這是我之前有返回值函數的代碼:

function get_no_order_array() { 
  var order_info = show_order(); 
  var order = []; 
  
  $.getJSON("../JSON/customers.json", function (date) { 
 
    date["man"].forEach(function (person) { 
      if (order_info.k_obj[person] == undefined) { 
        order.push(person); 
      } 
    }) 
  }); 
 
  return order; 
} 

後來發現打印的數組order 一直為空,以下是改正後的代碼:

function get_no_order_array() { 
  var order_info = show_order(); 
  var order = []; 
  $.ajaxSettings.async = false;//在執行之前加$.ajaxSettings.async = false;  (同步執行) 
  $.getJSON("../JSON/customers.json", function (date) { //<span style="line-height: 1.5;">$.getJSON不懂的話可以看一下我之前的博客,或是專門學習一下  “JSON”</span> 
date["man"].forEach(function (person) { 
      if (order_info.k_obj[person] == undefined) { 
        order.push(person); 
      } 
    }) 
  }); 
  $.ajaxSettings.async = true;//執行你的代碼之後及時恢復為$.ajaxSettings.async = true; (異步執行) 
  return order; 
} 

在循環之前加一個$.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;

以上這篇淺析$.getJSON異步請求和同步請求就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved