Javascript 服务器返回重定向后,iOS设备上的AJAX或XHR请求失败,代码为0(302)
我正在开发一个移动应用程序,它是用Cordova(PhoneGap)开发的。 我的基本代码是用JavaScript编写的,并编译成原生Android和iOS代码。 在一个加载XML的请求中,我向UrlA发送了一个请求,服务器将请求重定向(状态302)到UrlB。然后,一个XML响应从UrlB返回 所有这些过程都在Android设备(和桌面)上运行 但在iOS设备上,由于某种原因,对UrlA的请求失败,代码为0 我尝试将我的请求表单jQuery的Ajax更改为带有XHR对象的纯JS解决方案。但结果是一样的 原始Ajax请求(仅适用于Android) 我的第二次尝试,使用XHR请求(仅适用于Android) 我还注意到,在Android设备上,当使用XHR对象运行代码时,我们得到的都是readyState(1到4,一个在外部之后) 但在iOS设备上,我们只获得readyState 1和readyState 4,但状态码为0。替换Javascript 服务器返回重定向后,iOS设备上的AJAX或XHR请求失败,代码为0(302),javascript,ios,ajax,xmlhttprequest,Javascript,Ios,Ajax,Xmlhttprequest,我正在开发一个移动应用程序,它是用Cordova(PhoneGap)开发的。 我的基本代码是用JavaScript编写的,并编译成原生Android和iOS代码。 在一个加载XML的请求中,我向UrlA发送了一个请求,服务器将请求重定向(状态302)到UrlB。然后,一个XML响应从UrlB返回 所有这些过程都在Android设备(和桌面)上运行 但在iOS设备上,由于某种原因,对UrlA的请求失败,代码为0 我尝试将我的请求表单jQuery的Ajax更改为带有XHR对象的纯JS解决方案。但结果
if (XHR.status == 200) // OK
与
if((XHR.status>=200&&XHR.status<300)||
(XHR.status===0&!!XHR.responseXML))
我也有同样的问题。谁有解决问题的办法
var XHR = new XMLHttpRequest();
if (XHR)
{
var method = 'GET';
var isAsync = true;
XHR.onreadystatechange = function()
{
switch (XHR.readyState)
{
case 0:
console.log("# XHR: State 0 - Request isn't initialized");
break;
case 1:
console.log("# XHR: State 1 - Request was set up");
break;
case 2:
console.log("# XHR: State 2 - Request was sent");
break;
case 3:
console.log("# XHR: State 3 - Request in progress");
break;
case 4:
console.log("# XHR: State 4 - Request is completed");
if (XHR.status == 200) // OK
{
console.log("# XHR: Request Success!");
console.log(XHR);
var responseText = XHR.responseText;
var responseXml = XHR.responseXML;
successCallback(responseXml)
}
else // request failed
{
console.warn("# XHR: Request Failed!");
console.log(XHR);
failerCallback("# XHR: Request failed! [Status: " + XHR.status + "]");
}
break;
default:
console.log("# XHR: Unknown ReadyState [" + XHR.readyState + "]");
break;
}
};
XHR.open(method, xmlUrl, isAsync);
XHR.send(); // Start request
}
else
{
failerCallback("XHR isn't defined");
}
if (XHR.status == 200) // OK
if ((XHR.status >= 200 && XHR.status < 300) ||
(XHR.status === 0 && !!XHR.responseXML))