Добрый день, давным давно сделал функцию для получения параметров из GET запроса, и она работала все это время, но тут перестали отображаться параметры, начал разбираться нашел, что запрос приходит (во вкладке сеть все ок(статус 200) приходит) а calback не вызывается, добавил:
console.log("http2.readyState=",http2.readyState);
console.log("http2.status=",http2.status);
И результат такой получился:
Код:
|
http2.readyState= 2
http2.status= 200
http2.readyState= 3
http2.status= 200
http2.readyState= 4
http2.status= 0 |
Как так получается что после принятия всего пакета (readyState= 4)
статус пакета пакета =0 ? Во вкладке сеть пишется статус 200
Почему статус может сбрасываться ?
Заголовок ответа такой:
Цитата:
|
HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Content-Length: 00000002440
|
в Content-Length: 00000002440 переднии нули могут мешать ?
var http2 = createRequestObject();
function GetSettingTimeout(link,ModeFuncCall,CallbackTrue,CallbackFalse,CallbackWait) {
(function _f() {
if( http2 ) {
//---------------------------------------------
var uriEncode = encodeURI(link).replace(/%20/g,'!').replace(/'/g,'~').replace(/%22/g,'"').replace(/%5B/g, '[').replace(/%5D/g, ']');
////console.log(uriEncode);
// if(WEBPACK_MODE){
// }else{
//uriEncode="http://192.168.0.4/"+uriEncode;
//}
XMLHttpRequest_Start=1;
http2.open('GET', uriEncode, true);
//---------------------------------------------
http2.setTimeout(function() {}, 10); =3000;
clearTimeout(TimerID||0); //Если запускаеться другая функция то переназначаем для него таймаут
//---------------------------------------------
http2.onreadystatechange = function () {
console.log("http2.readyState=",http2.readyState);
console.log("http2.status=",http2.status);
if (http2.readyState == 4&&http2.status == 200) {
if (CallbackTrue && typeof(CallbackTrue) === "function") {
clearTimeout(TimerID||0);
CallbackTrue.call(http2.responseText);
CallbackWait=0; //Сбросил CallbackWait в ноль что бы при следующем GetSettingTimeout с другими параметрами не запускался предыдуший CallbackWait
}
//CallbackTrue.call(http2.responseText);
//ConnectSuccessful();
if(ModeFuncCall==CYCLIC){
TimerID = setTimeout(_f, 1000);
}
}else{
if(typeof(CallbackWait) === "function"){
CallbackWait();
}
}
};
//---------------------------------------------
http2.ontimeout = function() {
//Disconnect();
TimerID = setTimeout(_f, 1500);
if (CallbackFalse && typeof(CallbackFalse) === "function") {
CallbackFalse.call(http2.responseText);
}
TimerID = setTimeout(_f, 3000);
};
//---------------------------------------------
http2.abort= function() {
if(StatusAbort==ClearAbbort){
//Disconnect();
StatusAbort=ClearAbbort;
TimerID = setTimeout(_f, 1000);
}
};
//---------------------------------------------
http2.send(null);
}else{
TimerID = setTimeout(_f, 1000);
}
})();
}
function createRequestObject()
{
try { return new XMLHttpRequest() }
catch(e)
{
try { return new ActiveXObject('Msxml2.XMLHTTP') }
catch(e)
{
try { return new ActiveXObject('Microsoft.XMLHTTP') }
catch(e) { return null; }
}
}
}