Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.07.2015, 21:39
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

KosBeg,
Ваш пример не совсем корректен, по моему. Если получен статус 200, это еще не значит, что весь ответ получен. К тому же, асинхронный запрос, как в Вашем примере, требует определить коллбек onreadystatechange

Последний раз редактировалось jackdempsey2015, 10.07.2015 в 21:47.
Ответить с цитированием
  #12 (permalink)  
Старый 10.07.2015, 21:49
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

Сообщение от jackdempsey2015
Ваш пример не совсем корректен, по моему
пример не мой а из той ссылки, лично я если юзаю аякс, то использую не статус 200, а
status >= 200 && status < 400
Ответить с цитированием
  #13 (permalink)  
Старый 10.07.2015, 22:00
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от KosBeg
не мой а из той ссылки
какая разница из какой он ссылки, привели то Вы его.
Сообщение от KosBeg
то использую не статус 200, а status >= 200 && status < 400
Это зачем?
Ответить с цитированием
  #14 (permalink)  
Старый 11.07.2015, 06:56
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это похоже на узоры. Чтоб код красивее был, орнамент такой.

Нет никакого смысла проверять статус, ибо из всех статусов вы получите только разрешенные, и разрешенные вам ничего не дадут, ибо ваши скрипты все равно заточены на проверку условленной переменной в ответе.

Ну хорошо, допустим

if(status==500)

сравните

if(responseText.lenght<1)

Теоретически в респонзе может что-то быть и нужно проверить 500, но где вы такое видели на практике?

Статусы редиректов вообще до скрипта не доходят.
Ответить с цитированием
  #15 (permalink)  
Старый 11.07.2015, 07:08
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Передавайте все в json'е, несмотря на химерические рекомендации не передавать хтмл в жисоне. Выглядит бредово, зато работает:

try{
  var data=JSON.parse(this.responseText);
}
catch(e){
  /* do somethin */
}


если в ответе нет нормального формата жисона, значит либо он пустой, либо пришел с другого места, скажем с сообщения об ошибке, об отсутствии и тп.

Внутри катча можно захотеть получить уже статус и типа типа принять то или иное решение.

ЗЫ Еще раз. Если бы браузер без базаров пропускал все заголовки до скрипта - это была бы другая технология, настоящая и под нее можно было бы написать нормальные библиотеки. Но поскольку пропускается только часть - ради этой части не стоит и дрыгаться. Трай-кач на клиенте сделает все что требуется и без гемора со статусами.

Последний раз редактировалось kostyanet, 11.07.2015 в 07:10.
Ответить с цитированием
  #16 (permalink)  
Старый 11.07.2015, 09:18
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от kostyanet
на практике
На практике это обернется тем, что выведется только часть ответа, которая успела прийти, на момент обработки. Все просто.
Ответить с цитированием
  #17 (permalink)  
Старый 11.07.2015, 09:33
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

Сообщение от kostyanet
Выглядит бредово, зато работает
если все заслешить(как правильно сказать?) - очень даже работает =)
Сообщение от jackdempsey2015
выведется только часть ответа, которая успела прийти, на момент обработки
вы уверены?
var xhr = new XMLHttpRequest();

xhr.open('GET', 'phones.json', true);

xhr.send();

xhr.onreadystatechange = function() {
  if (xhr.readyState != 4) return; // эта штука не даст вывести часть ответа пока ответ полностью не загрузится =)

  alert( 'Пришел ответ: ' + xhr.responseText );

}
Ответить с цитированием
  #18 (permalink)  
Старый 11.07.2015, 09:35
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от KosBeg
(xhr.readyState != 4)
Я про эту проверку как раз и говорю. Она является обязательной
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ответ от сервера (ajax) gam0ra Общие вопросы Javascript 3 16.12.2014 15:11
ajax json ответ от сервера в ошибке imedia Элементы интерфейса 4 16.06.2014 12:20
ajax, ответ сервера DeUM AJAX и COMET 2 10.02.2014 10:58
AJAX, PERL, запись в файл и неожиданный ответ от сервера Jopses jQuery 3 28.02.2013 16:06
Ответ сервера в плугине ajaxForm отдается неправильно. IgorOk jQuery 11 13.12.2009 04:35