#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. Хорошая идея, но никакого эффекта. 🙁 Как все остальные это делают?