除非在编辑模式下,否则只有第一个AJAX请求在SharePoint 2013中有效

时间:2016-09-18 23:31:12

标签: javascript jquery ajax sharepoint sharepoint-2013

我需要能够在一个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()
            });
        }

1 个答案:

答案 0 :(得分:0)

我建议在promise中链接多个ajax调用。检查这个问题的第二个回复并修改你的js,如下所示: How do I chain three asynchronous calls using jQuery promises?