【发布时间】:2016-04-02 18:54:49
【问题描述】:
我正在尝试合并两个 jQuery AJAX 调用的结果。我在这里查看了其他类似的问题,但似乎都没有帮助。对于每个 ajax 调用(其中 2 个),我成功调用了函数 createStatusView 并将结果传递给它。好的部分是结果适用于两个 AJAX 调用。坏消息是我的 $.when 调用为 res1 和 res2 返回 undefined,然后将结果的 undefined 发送到我的 createStatusView。所以,我真的不想为这两个 AJAX 调用调用 createStatusView,只有 $.when。任何建议将不胜感激。
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 成功处理程序没有向调用者返回任何内容...您想用 ajax 调用返回的数据来提供您的
$.when.done回调吗? -
createStatusView 只处理数据,或者在这种情况下,处理结果并将它们显示在网页中。它可以工作,但由于代码量过多而不想包含它。如果我注释掉 $.when,两个 ajax 调用都可以正常工作,唯一的问题是 createStatusView 中发生的处理发生了两次而不是一次,我最终在我的页面上显示了两个不同的数据块,而,我想合并结果并一次处理它们,以便我的布局和逻辑正常工作
标签: javascript jquery ajax