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 呼び出しは非同期です。これは、行return 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 に答える