關於ajax跨域請求API數據的一些問題


  一般來說我們使用jquery的ajax來跨域請求API數據的時候每次請求,就只能請求一組數據,而且當我們再次點擊發送ajax請求的時候,新請求的數據會覆蓋掉原來的數據,那么如何每次在請求的數據的時候,保留我們上次請求的數據呢?

  做法很簡單,聲明全局變量,把每次請求的數據,緩存起來,這樣有兩個好處,一個是減少http請求,降低交互事件,另一個是方便我們查詢歷史數據。

  下面是我們一般使用jquery發送ajax請求的代碼片段:

 1 function testData(arg){
 2             $.ajax({
 3                 type:'get',//請求方式
 4                 url:'',//api地址
 5                 dataType:'jsonp',//使用jsonp來開始跨域
 6                 jsonpCallback:'Callback',//跨域需要的回調函數
 7                 success:function(data){
 8                     // 請求數據成功后的調用的函數
 9                     // data就是我們要獲取的參數
10                 }
11             })
12         }
其實通過上面代碼我們很容就能看出,我們每次調用方法,發送ajax請求,都會獲得一組全新的數據,因為參數data是每發送一次的請求,就會攜帶一組新的數據給我們!這就是問題所在:

  那么我們對下面的代碼進行改造:

 1 var items = {};
 2         var results = [];
 3         function testData(arg){
 4             $.ajax({
 5                 type:'get',//請求方式
 6                 url:'',//api地址
 7                 dataType:'jsonp',//使用jsonp來開始跨域
 8                 jsonpCallback:'Callback',//跨域需要的回調函數
 9                 success:function(data){
10                     // 請求數據成功后的調用的函數
11                     // data就是我們要獲取的參數
12                     // 一般API的結構是對象里面包含對象數組
13                     // 那么首先我們先把我們想要的數據,以對象的形式的添加到數組中
14                     results.push({
15                         foo:data.foo,
16                         bar:data.bar,
17                         name:data.name
18                     })
19                     // 其次再把這個數組當成對象的屬性,添加到一個空對對象中,這樣就實現了數據的緩存
20                     items = {
21                         results:results
22                     }
23                 }
24             })
25         }

 


免責聲明!

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



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