0

我有一个对 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 块中来验证是否正确返回了值。

4

2 回答 2

2

AJAX 调用是异步的。这意味着当您点击 linereturn arr时,completeFunc还不一定会调用 。

你能修改代码,让它接受一个提供数组的回调函数吗?像这样:

function GetProductIDSforActiveQuote(callback) {
    // other details omitted
    completefunc: function (xData, Status) {          
        arr = // your code
        callback(arr); // <- here's the difference.
      };        
}    

在回调函数中,您可以根据需要处理数组。

于 2012-05-11T22:07:29.807 回答
1

看起来SPServices是异步的,所以它会在响应到达之前返回。您必须从内部使用数组completefunc

于 2012-05-11T22:07:26.103 回答