Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2019, 08:03
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Get запрос сбрасываеться статус ответа(решено)
Добрый день, давным давно сделал функцию для получения параметров из 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; }
            }
        }
    }

Последний раз редактировалось pokk, 17.12.2019 в 08:16.
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2019, 08:17
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Оказалось что со сервера не правильно выдается размер в шапке
в 10 раз больше чем реальные данные.
Content-Length: 00000002440
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на сервер выдает мне статус 404 при использования объекта new XMLHttpRequest() oleg901 AJAX и COMET 6 01.08.2019 15:46
запрос с callback, почему во второй раз возвращает 2 ответа? sovsem-nub AJAX и COMET 1 01.12.2015 19:52
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 10:04
jquery как обработать отсутствие ответа сервера на ajax запрос happy_Mikhail jQuery 2 26.11.2014 13:07
Tampermonkey и GET\POST запрос с выводом ответа XRASER Events/DOM/Window 5 16.04.2014 14:10