Я отлаживал проблему ajax в течение недели и не могу понять, как ее исправить.Я использую jquery для выполнения вызова ajax следующим образом:
.... in head tag....
$.ajaxSetup({
cache: false
});
....on button click in the code...
jqxhr = $.ajax({
url: 'searching.html',
data: 'showDetails=' + showProgressDetails,
dataType:'text',
success: handleRefreshComplete,
error:handleSearchError,
complete:handleCompleteEvent
})
.done(function() { alert("done"); })
.fail(function() { alert("error"); })
.always(function() { alert("always"); });
Вызов ajax занимает около 5 минут.Когда я запускаю этот код в Chrome, он работает, но все остальные браузеры просто сидят и никогда не завершают работу.Не выдается никаких ошибок и не вызывается ни один из обработчиков событий (например, ошибка, успех).
Я использовал WireShark, чтобы посмотреть трассировку сети, и я вижу, что когда вызовы ajax выполняются в Chrome,TCP поддерживает активность запросов, отправляемых следующим образом:
...[TCP Keep-Alive] 64428 > http [ACK] Seq=3599 Ack=135557 Win=40018 Len=1
...[TCP Keep-Alive ACK] http > 64428 [ACK] Seq=135557 Ack=3600 Win=248 Len=0 SLE=3599 SRE=3600
Для всех других браузеров ни один из них не отправляется и не принимается.Я пытался установить таймауты, но они, похоже, не влияют на код.
Проблема на самом деле более сложная, чем я сначала думал.Похоже, что проблема возникает, когда в нашей сети более одного запроса ajax.Когда это происходит, Chrome отлично работает, но другие браузеры просто ждут бесконечно.На стороне сервера все вызовы возвращаются обратно клиенту
Будем весьма признательны за любые мысли или предложения по устранению или дальнейшей отладке этой проблемы.
Спасибо,
Джо С