2つのjQuery AJAX呼び出しの結果をマージしようとしています。私はここで他の同様の質問を見てきましたが、誰も助けてくれないようです。それぞれのAjax呼び出し(2つ)について、関数createStatusViewを呼び出すと成功し、結果を渡します。良い点は、結果が両方のAJAX呼び出しで機能することです。悪いニュースは、私の$ .when呼び出しがres1とres2の両方に対して未定義を返し、結果が未定義のものを私のcreateStatusViewに送るということです。ですから、私は本当に両方のAJAX呼び出しのcreateStatusViewを呼びたくはなく、$ .whenだけを呼び出すことにします。どんな勧告も高く評価されます。2つのjQuery AJAX呼び出しの結果をマージし、遅延/約束を使用する方法
function getSpecifiedList(listName, userId){
var url = SP.PageContextInfo.get_webServerRelativeUrl() + "/_vti_bin/listdata.svc/" + listName;
var url1 = url + "?$select=ParentOrg,ORG,URL,Site_Status&$inlinecount=allpages";
var call1 = $.ajax({
url: url1,
type: "GET",
headers:{"accept":"application/json;odata=verbose",
},
success: function(results){createStatusView(results, listName);},
error:function(error){
console.log("Error in getting List: " + listName);
$(_options.container).html("Error retrieving your " + listName + ". " +
SP.PageContextInfo.get_webServerRelativeUrl());
}
});
var url2 = url + "?$select=ParentOrg,ORG,URL,Site_Status&$inlinecount=allpages&$skiptoken=1000";
var call2 = $.ajax({
url: url2,
type: "GET",
headers:{"accept":"application/json;odata=verbose",
},
success: function(results){createStatusView(results, listName);},
error:function(error){
console.log("Error in getting List: " + listName);
$(_options.container).html("Error retrieving your " + listName + ". " +
SP.PageContextInfo.get_webServerRelativeUrl());
}
});
//the res1 and res2 come back undefined
//call1 and call2 are objects as shown in F12 debug
$.when(call1,call2).done(function(res1,res2){
var results = res1[0].d.results.concat(res2[0].d.results);
createStatusView(results,listName);
});
}
はcreateStatusViewを返すために何を想定していますか?あなたの$ .ajax成功ハンドラが呼び出し側に何も返さない... '$ .when.done'コールバックにajax呼び出しから返されたデータを渡したいのですか? –
createStatusViewはデータまたはこの場合は結果を処理してWebページに表示します。それは動作しますが、コードの余分な量のためにそれを含めることを望んでいませんでした。 AJAX呼び出しが正しく動作するかどうかを$コメントすると、唯一の問題はcreateStatusViewで行われる処理が2回発生するのではなく、2つの異なるデータがページに表示されることです。結果をマージしてまとめて処理して、レイアウトとロジックが正しく動作するようにしたいと考えています。 –