我正在尝试从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);
.....
});
答案 0 :(得分:0)
请记住,“如果我在同一浏览器上打开了本地HTML文件,则它在IE的SharePoint页面上可以正常工作。”
回溯跟踪和发现错误,发现如果method:POST
和type:POST
都在第二个Ajax呼叫中且第一个Ajax呼叫仅与method: POST
而没有type: POST
< / p>
我不确定它为什么起作用以及如何起作用,但是确实如此。
我想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;
....
});