[英]Trouble with Javascript namespacing in returning an Array from a function
我有一个对共享点的AJAX调用(如下所示)。
function GetProductIDSforActiveQuote() {
var arr = new Array();
$().SPServices({
operation: "UpdateListItems",
listName: "Quotes",
ID:quoteID,
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
arr = $(this).attr("ows_Products").split(',');
});
}
});
return arr;
}
我试图返回一个数组,但最后得到一个空数组。 我可以通过将控制台日志放在completefunc块中来验证是否正确返回了值。
AJAX调用是异步的。 这意味着当您点击return arr
,不一定已调用completeFunc
。
您可以修改代码,使其采用数组提供的回调函数吗? 像这样:
function GetProductIDSforActiveQuote(callback) {
// other details omitted
completefunc: function (xData, Status) {
arr = // your code
callback(arr); // <- here's the difference.
};
}
然后在回调函数中,可以根据需要处理数组。
看起来SPServices
是异步的,因此它将在响应到达之前返回。 您必须从completefunc
内部使用数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.