问题-仅当在浏览器中打开具有相同Ajax调用的另一个页面时,IE上的Ajax调用才有效

时间:2018-11-29 15:11:41

标签: jquery json ajax internet-explorer sharepoint

我正在尝试从SharePoint Content编辑器对服务器端API进行POST Ajax调用。 API返回URL和标题的列表。然后将URL动态添加到SharePoint列表视图中。 在Chrome上运行正常,但在IE上却无法正常运行。 我收到XMLHttpRequest: Network Error 0x2ef3, could not complete the operation due to error 00002ef3

我在本地使用Ajax调用创建了一个测试HTML,它工作正常。 奇怪的是,如果我在同一浏览器上打开了本地HTML文件,则它在IE上的SharePoint页面上运行良好。 有人可以帮我解决这个问题吗?

这是AJAX调用:

var response;
Var settings = {
“async”: true,
“crossDomain”:true,
“url”: url1,
“method”: “POST”,
“type”:”POST”,
“dataType”:”json”,
“Keep-Alive”:”timeout=0, max=1000”,
“Cache-Control”:”no-cache, no-store, must-revalidate”,
“Pragma”:”no-cache”,
“Expires”:”0”,
“headers”:{
“Content-Type”:”application/json; charset=utf-8”,
“api_key”:key1,
“Authorization”:”Bearer “ + tkn1
},
“complete”:function(text){
response=text.responseText;
},
“cache”:false,
“processData”: false,
“data”:data1()
};

function data1(){
return JSON.stringify(data2);
}

jQuery.support.cors=true;
$.ajax(settings).complete(function(){
var resObj=JSON.parse(response);
.....
});

1 个答案:

答案 0 :(得分:0)

请记住,“如果我在同一浏览器上打开了本地HTML文件,则它在IE的SharePoint页面上可以正常工作。” 回溯跟踪和发现错误,发现如果method:POSTtype:POST都在第二个Ajax呼叫中且第一个Ajax呼叫仅与method: POST而没有type: POST < / p>

我不确定它为什么起作用以及如何起作用,但是确实如此。

我想IE会以某种方式占用缓存数据,并且cache:falsePragma: no-cacheExpires: 0似乎永远无法正常工作。

这是完整的解决方案:

var successSettings = {
    "async": true,
    "crossDomain": true,
    "url": url1,
    "method": "POST",
    "type": "POST",
    "dataType":"json",
    "Pragma": "no-cache",
    "Expires": "0",
    "headers": {
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": tkn
        "api_key":key1
     },
     "success": function(text1){
         response = text.objlink;
     },
     "error": function(jqXHR, exception){
         var errorHandle = jqXHR + exception;
     },
     "cache": false,
     "processData": false,
     "data": dataSend()
};
var failSettings = {
    "async": true,
    "crossDomain": true,
    "url": url1,
    "method": "POST",
    "dataType":"json",
    "Pragma": "no-cache",
    "Expires": "0",
    "headers": {
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": tkn
        "api_key":key1
     },
     "success": function(text1){
         response = text.objlink;
     },
     "error": function(jqXHR, exception){
        $.ajax(SuccessSettings).done(function () {
               var resObj = response;
               ....
        });
     },
     "cache": false,
     "processData": false,
     "data": dataSend()
};
jQuery.support.cors = true;
$.ajaxSetup({cache: false});
$.ajax(failSettings).done(function () {
     var resObj = response;
     ....
});