#jquery #ajax #apache #internet-explorer-9
#jquery #ajax #apache #internet-explorer-9
Вопрос:
В IE 9 при отправке AJAX-запроса на мой сервер с использованием любого из следующих методов
// SproutCore
SC.Request.postUrl(...).send()
// jQuery
$.post(...)
Я всегда вижу почти 30-секундную задержку перед возвратом функции, хотя в WireShark я ясно вижу, что запрос получен. Прошло некоторое время с тех пор, как я использовал Wireshark, так что, возможно, я просто неправильно читаю, но я вижу следующее, что заставляет меня думать, что это может быть проблемой Apache, возможно?
Time Info
-------------------------------------------------------------------
77.716243 [PSH, ACK] Seq=1 Ack=1031 Win=7808 Len=896
107.576027 [FIN, ACK] Seq=897 Ack=1032 Win=7808 Len=0
Обратите внимание на почти точную разницу в 30 секунд. Кроме того, я подтвердил, что первый запрос содержит правильные данные с сервера.
Это просто ошибка в IE 9? Или, возможно, неправильная конфигурация на моем сервере Apache?
Любые мысли будут с благодарностью!
Комментарии:
1. Вы пробовали это в других браузерах? В конце концов, IE9 — это IE, поэтому удивительно, если что-то работает хорошо. IE9 — небольшое улучшение, но оно падает с низкой базы.
2. Извините, да, он отлично работает в Chrome, Firefox, Safari и занимает несколько секунд в IE8, но обычно находится в диапазоне 2-6 секунд.
3. Что вы запрашиваете? Могут ли в нем быть какие-то ошибки html и т. Д.? У IE есть проблема с исправлением ошибок в запросе ajax: (
4. Я запрашиваю некоторый базовый JSON. Насколько я могу судить, это совершенно справедливо. И все работает отлично после 30-секундной задержки.
5. Для дальнейшего использования, скрипач (www.fiddertool.com ) — это гораздо лучший инструмент, чем wireshark, для отладки подобных вещей.
Ответ №1:
Хммм … похоже, это не проблема. По-видимому, перезагрузка моего компьютера устранила проблему, так что это не проблема на уровне кода. Извините, что сбрасываю это в SO-сферу. Надеюсь, тем не менее, кто-то еще увидит это и перезапустит, прежде чем отправлять вопрос 🙂
Обновление: я снова сталкиваюсь с ошибкой, но я думаю, что это связано с сервером, поэтому я открыл вопрос о сбое сервера.
Обновление x2: ну, это не реальное решение, но я нашел обходной путь, используя следующий код:
didSend: function(request, response) {
if (SC.browser.msie amp;amp; request.get('type') === "POST") {
setTimeout(function() {
Core360.Request.getUrl('/test_server').send();
}, 500);
}
}
По какой-то причине это приводит к закрытию предыдущего соединения, и, по-видимому, запрос GET немедленно возвращается и не ожидает рассмотрения, поэтому он работает.
Я надеюсь, что это поможет какой-нибудь бедной душе в будущем.