Кто-нибудь заметил странную ошибку AJAX в WebKit, при которой он игнорирует readyState 3? - PullRequest
0 голосов
/ 20 сентября 2010

Я наблюдаю странное поведение в WebKit (на Android), когда мой серверный процесс отправляет ему ответ, который он должен обработать немедленно (вместо того, чтобы ждать readyState 4). В Firefox и Safari это работает, как и ожидалось, но в webkit не только не отвечает на readyState, но вместо этого, похоже, запускает повторный запрос к серверу!

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

[РЕДАКТИРОВАТЬ] Это становится все страннее и страннее. Пока сервер отвечает в течение 10 секунд, все в порядке. Но если это займет больше времени, запрос будет отправлен повторно. Однако браузер, похоже, не знает об этой повторной отправке или, если это так, не сообщает об этом никоим образом. Я прикрепил уникальный идентификатор к запросу, и когда он поступает во второй раз на сервере, идентификатор тот же. Но это определенно порождает дополнительный вызов на сервер. Я вроде в недоумении, как отладить это дальше.

1 Ответ

0 голосов
/ 21 января 2011

Никто не подключил, так что.Я исправил проблему, убив соединение со стороны сервера.

Итак, мое решение:

a) клиент делает вызов серверу (который является perl.cgi)

b) код сервера:

print (немного JSON для broswer);близко (STDOUT);# это отправляет ReadyState 4 в браузер и закрывает соединение.& methodThatTakesAWhile ();

Это не объясняет, ПОЧЕМУ браузер плохо себя ведет, но оно исправляет эту конкретную ошибку.

...