Chrome, похоже, не запускает javascript xmlhttprequests после отправки формы, но FF и IE выполняют

#google-chrome #xmlhttprequest

#google-chrome #xmlhttprequest

Вопрос:

Я использую этот маленький трюк для обновления текущей страницы во время загрузки следующей страницы. Когда пользователь нажимает «Отправить», я устанавливаю таймер интервала, который выполняет вызовы xhr на сервер, чтобы узнать, сколько времени займет ответ, и обновляет страницу этой информацией, тем самым успешно развлекая пользователя.

В Firefox и IE это работает нормально, но, похоже, в chrome после отправки формы вызов setinterval все равно сработает, но xmlhttprequest фактически никогда не выполняет запрос. Я не получаю никаких ошибок или исключений, он просто делает это

     xmlhttp.onreadystatechange = statstatechange;
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send(postdata);
  

и моя функция statstatechange никогда не вызывается, и я не вижу запросов на стороне сервера, поэтому, насколько я могу судить, запрос никогда не выполняется.

Есть идеи, как заставить chrome это делать?

Ответ №1:

Для всех, у кого такая же проблема в chrome: оказывается, если у вас есть iframe на странице, вы можете запускать запросы xhr в этом iframe, и они будут продолжать работать даже после отправки формы главной страницы верхнего уровня. Так что это дерьмовый обходной путь, но, по крайней мере, он функционирует.

Комментарии:

1. Я порылся в Интернете, и это, по сути, единственное полезное решение, которое я нашел. Спасибо!

Ответ №2:

попробуйте добавить эти два

 xmlhttp.setRequestHeader('Content-length',url.length);
xmlhttp.setRequestHeader('Connection','close');
  

Комментарии:

1. Хорошая идея, но никакого эффекта. 🙁 Как все остальные это делают?