Проблема - Ajax-вызов в IE работает, только когда в браузере открыта другая страница с таким же Ajax-вызовом. - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь вызвать POST Ajax для серверного API из редактора контента SharePoint.API возвращает список URL и заголовка.Затем URL-адрес динамически добавляется в представление списка SharePoint.Это прекрасно работает в Chrome, но не в IE.Я получаю XMLHttpRequest: Network Error 0x2ef3, could not complete the operation due to error 00002ef3

Я создал тестовый HTML с вызовом Ajax на своем локальном компьютере, и он работает нормально.Странно думать, что он прекрасно работает на странице SharePoint в IE, если у меня был открыт локальный файл HTML в том же браузере.Может кто-нибудь помочь мне это исправить?

Вот вызов 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 голосов
/ 11 декабря 2018

Имея в виду, что «он прекрасно работает на странице SharePoint в IE, если у меня был открыт локальный HTML-файл в том же браузере».Обратно отследил след и ошибку и обнаружил, что Ajax Call работает, если оба method:POST и type:POST находятся во втором Ajax Call с первым Ajax Call только с method: POST без type: POST

Я неконечно, почему и как это работает, но это так.

Я полагаю, IE каким-то образом принимает данные кэша, и cache:false вместе с Pragma: no-cache и Expires: 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;
     ....
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...