저는 일주일 동안 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 분 정도 걸립니다. 크롬에서이 코드를 실행하면 작동하지만 다른 모든 브라우저는 그냥 앉아서 완료하지 않습니다. 오류가 발생하지 않으며 이벤트 핸들러 (예 : 오류, 성공)가 호출되지 않습니다.
내가 네트워크 추적을보고 WireShark로 사용하고 난 아약스 호출이 크롬에서 만들어진 경우, 다음과 같이 전송되는 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은 훌륭하게 작동하지만 다른 브라우저는 무기한 기다립니다. 서버 측에서는 모든 호출이 클라이언트에게 반환됩니다.
이 문제를 수정하거나 더 디버깅하는 방법에 대한 의견이나 제안은 크게 감사하겠습니다.
감사합니다,
조 C
ajaxSetup과 ajax 호출에서 모두 시간 초과를 시도했지만 도움이되지 않습니다. 또한 나는 너무 많은 동시적인 Ajax 요청을하지 않는지 확인하고 이것이 유일한 요청이다. –
문제는 실제로 생각보다 실제로 복잡합니다. 우리 네트워크에 하나 이상의 Ajax 요청이있을 때 문제가 발생하는 것 같습니다. 이 경우 Chrome은 훌륭하게 작동하지만 다른 브라우저는 무기한 기다립니다. 서버 측에서는 모든 호출이 클라이언트로 되돌아갑니다. –