2014-07-16 69 views
0

我正在通過Jquery AJAX調用C#api。我能夠遍歷所有數據並在控制檯中打印每個數據;但是,我無法將數據返回給變量(var x),以便它包含從api調用返回的所有對象。返回對象列表Jquery Ajax

這是我的代碼至今:

var uri = 'api/products'; 
function test(){ 
     // Send an AJAX request 
     $.getJSON(uri) 
      .done(function (data) { 
      // On success, 'data' contains a list of products. 

      var info = {}; 
      $.each(data, function (key, item) { 
       // Add a list item for the product. 
       console.log(item); 
       info.append(item); 
      }); 
      return info; 
      }); 
} 
var x = test(); 

我試圖只是簡單跳過$.each()並返回data,沒有運氣。

我應該使用除append之外的方法嗎?或者有什麼方法可以簡單地返回data? 謝謝。

回答

0

.done()是一個承諾(http://api.jquery.com/promise/),它採用回調函數。回調函數是無效的;沒有任何東西會消耗其回報......並且代碼中的return是(匿名)回調函數的返回值,而不是test(),這就是爲什麼你看不到任何值。

這是一個異步模式。這意味着test()將立即返回,而不是等待AJAX​​呼叫完成,並且沒有任何價值可以投入x! AJAX響應將在稍後的某個未知時間到達。回調函數的目的是允許您(當時!)對您收到的值做任何您想要做的事情。在這個例子中,你沒有向我們展示過什麼,但是你將需要重構它,以便在履行承諾後發生。