我通过Jquery AJAX调用C#api。我能够遍历所有数据并在控制台中打印每个数据;但是,我无法将数据返回到变量(var x
),因此它包含从api调用返回的所有对象。
到目前为止,这是我的代码:
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
,但没有运气。
我应该使用除追加以外的方法吗?或者有没有办法简单地返回data
?
感谢。
答案 0 :(得分:0)
.done()
是一个承诺(http://api.jquery.com/promise/),它接受回调函数。回调函数无效;没有消耗它的返回...代码中的return
是(匿名)回调函数的返回,而不是test()
,这就是为什么你没有看到任何价值出来的原因。
这是一种异步模式。这意味着test()
将立即返回,而不是等待AJAX调用完成,并且还没有值放入x
! AJAX响应将在稍后的某个未知时间到达。回调函数的目的是允许你(在那个时候!)做你打算用你收到的价值做什么。你还没有向我们展示这个例子中的内容,但是你需要在承诺完成后重组它。