获取XMLHttpRequest无法加载(URL)预检的响应无效(重定向)

时间:2016-09-27 05:01:49

标签: javascript jquery sharepoint-apps

这里我试图从sharepoint在线应用程序的日历列表中获得重复发生的事件,并使用类似的代码

hostWebUrl = decodeURIComponent(manageQueryStringParameter('SPHostUrl'));
    function GetListData() {
        var webUrl = hostWebUrl;// = "http://server/sitewhereyourlistexists";
        var listGuid = "{2000da75-8663-42d9-9999-ad855c54b4e0}"


        // An XMLHttpRequest object is used to access the web service
        var xhr = new XMLHttpRequest();
        var url = webUrl + "/_vti_bin/Lists.asmx";
        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems");

        // The message body consists of an XML document 
        // with SOAP elements corresponding to the GetListItems method parameters
        // i.e. listName, query, and queryOptions
        var data = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
            "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
                "<soap:Body>" +
                "<GetListItems xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">" +
                        "<listName>" + listGuid + "</listName>" +
                        "<query>" +
                            "<Query><Where>" +
                                "<DateRangesOverlap>" +
                                    "<FieldRef Name=\"EventDate\"/>" +
                                    "<FieldRef Name=\"EndDate\"/>" +
                                    "<FieldRef Name=\"RecurrenceID\"/>" +
                                    "<Value Type=\"DateTime\"><Today/></Value>" +
                                "</DateRangesOverlap>" +
                            "</Where></Query>" +
                        "</query>" +
                        "<queryOptions>" +
                            "<QueryOptions>" +
                                "<ExpandRecurrence>TRUE</ExpandRecurrence>" +
                            "</QueryOptions>" +
                        "</queryOptions>" +
                "</GetListItems>" +
                "</soap:Body>" +
            "</soap:Envelope>";

        // Here we define what code we want to run upon successfully getting the results
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    var doc = xhr.responseXML;
                    // grab all the "row" elements from the XML results
                    var rows = doc.getElementsByTagName("z:row");
                    var results = "Today's Schedule (" + rows.length + "):\n\n";
                    var events = {};
                    for (var i = 0, len = rows.length; i < len; i++) {
                        var id = rows[i].getAttribute("ows_FSObjType"); // prevent duplicates from appearing in results
                        if (!events[id]) {
                            events[id] = true;
                            var allDay = rows[i].getAttribute("ows_fAllDayEvent"),
                                title = rows[i].getAttribute("ows_Title"),
                                start = rows[i].getAttribute("ows_EventDate");
                            var index = start.indexOf(" ");
                            var date = start.substring(5, index) + "-" + start.substring(2, 4); // get the date in MM-dd-yyyy format
                            start = start.substring(index, index + 6); // get the start time in hh:mm format
                            var end = rows[i].getAttribute("ows_EndDate");
                            index = end.indexOf(" "); end = end.substring(index, index + 6); // get the end time in hh:mm format
                            results += date + " " + (allDay == "1" ? "All Day\t" : start + " to " + end) + " \t " + title + "\n";
                        }
                    }
                    alert(results);
                } else {
                    alert("Error " + xhr.status);
                }
            }
        };

        // Finally, we actually kick off the query
        xhr.send(data);
    }


在decument中调用此函数后。准备部分它不检索任何数据但是我可以在浏览器的控制台中看到如下所示的无效错误 enter image description here

1 个答案:

答案 0 :(得分:0)

您将在左侧面板中单击正确的请求,然后在右侧顶部面板中选择“检查器”。然后在不同的请求和响应选项之间进行选择。

Fiddler