我需要能够在一个sharepoint页面上同时发出2个ajax请求。一个请求来自当前站点,另一个来自团队站点。如果我使用不同的网址(/ events)和(/ travel),单独使用时它们都可以在页面上使用。当我尝试将它们组合时(例如,在/ events调用的成功部分中进行旅行的AJAX调用),只有问题。它适用于编辑模式,但如果我保存页面,它只显示来自/ events的项目,而不是显示/ travel。
$.ajax({
url: url, //THE ENDPOINT
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(data) {
$.ajax({
url: urlB, //THE ENDPOINT
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(dataB) {
for (var iB = 0; iB < dataB.d.results.length; iB++) {
var dataStartB = dataB.d.results[iB].StartTime;
var dataEndB = dataB.d.results[iB].EndTime;
var isoStartB = new Date(parseInt(dataStartB.substring(6).slice(0,-2))).toISOString().replace("T"," ").split('.')[0];
var isoEndB = new Date(parseInt(dataEndB.substring(6).slice(0,-2))).toISOString().replace("T"," ").split('.')[0];
events.push({
id: dataB.d.results[iB].Id.toString(),
title: dataB.d.results[iB].Title,
start: isoStartB,
end: isoEndB,
url: ("../team/_vti_bin/listdata.svc/Grouptravel" + "(" + dataB.d.results[iB].Id + ")"),
allDay: dataB.d.results[iB].AllDayEvent.toString()
});
}
}
});
for (var i = 0; i < data.d.results.length; i++) {
var dataStart = data.d.results[i].StartTime;
var dataEnd = data.d.results[i].EndTime;
var isoStart = new Date(parseInt(dataStart.substring(6).slice(0,-2))).toISOString().replace("T"," ").split('.')[0];
var isoEnd = new Date(parseInt(dataEnd.substring(6).slice(0,-2))).toISOString().replace("T"," ").split('.')[0];
events.push({
id: data.d.results[i].Id.toString(),
title: data.d.results[i].Title,
start: isoStart,
end: isoEnd,
url: ("../_vti_bin/listdata.svc/Events/" + "(" + data.d.results[i].Id + ")"),
allDay: data.d.results[i].AllDayEvent.toString()
});
}
答案 0 :(得分:0)
我建议在promise中链接多个ajax调用。检查这个问题的第二个回复并修改你的js,如下所示: How do I chain three asynchronous calls using jQuery promises?