我对sharepoint进行了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块中放置一个控制台日志来验证值是否正确返回。
答案 0 :(得分:2)
AJAX调用是异步的。这意味着,当您点击return arr
行时,completeFunc
尚未被调用。
你可以修改代码,这样它需要一个提供数组的回调函数吗?像这样:
function GetProductIDSforActiveQuote(callback) {
// other details omitted
completefunc: function (xData, Status) {
arr = // your code
callback(arr); // <- here's the difference.
};
}
在回调函数中,您可以根据需要处理数组。
答案 1 :(得分:1)
看起来SPServices
是异步的,因此它会在响应到来之前返回。您必须使用completefunc
内的数组。