我不是一个经验丰富的Javascript程序员,所以可能存在一些基本错误。 我只想编写一个函数,对WEBAPI进行AJAX调用并返回数组。但我在理解变量范围时犯了一些错误。
function GetProductsOfAccount(AccountID) {
var returnProducts;
console.log("In GetProductsOfAccount");
var serviceURL = productURI + "/GetProductsOfAccount/" + AccountID;
console.log(serviceURL);
$.ajax({
type: "GET",
datatype: "json",
url: serviceURL,
context: this,
success: function (Products) {
console.log("From AJAX" + Products);
returnProducts = Products;
//This correctly holds and shows all products
console.log("Return Products 1 " + returnProducts);
},
error: function (x, y, z) {
returnProducts = null;
console.log("Error" + x + '\n' + y + '\n' + z);
}
});
//This just shows undefined
console.log(" Returned Products 2 " + returnProducts);
return returnProducts;
}
为什么returnProducts最终会失去价值,这样做的正确方法是什么?
答案 0 :(得分:0)
编辑:使用jQuery延迟的稍微替代语法(我没有在Arun的链接中看到它):
var productsOfAccount = function (AccountID) {
var serviceURL = productURI + "/GetProductsOfAccount/" + AccountID;
return $.ajax({
type: "GET",
datatype: "json",
url: serviceURL,
}).promise();
}
var test = $.productOfAccount(20)
test.then(function(products){
console.log("From AJAX" + products);
returnProducts = Products;
//This correctly holds and shows all products
console.log("Return Products 1 " + returnProducts);
});
您可以多次应用test.then用于不同目的。