2011-08-15 2 views
1

저는 일주일 동안 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

답변

1

를 추가해보십시오 전화에 timeout :

여기

은 내가 timeout 5 분을 추가 (* 1000 5 * 60)

$.ajaxSetup({ 
    cache: false, 
    timeout: 3000000 
}); 

실제 소요 시간에 따라 한 단계 높일 수 있습니다.

+0

ajaxSetup과 ajax 호출에서 모두 시간 초과를 시도했지만 도움이되지 않습니다. 또한 나는 너무 많은 동시적인 Ajax 요청을하지 않는지 확인하고 이것이 유일한 요청이다. –

+0

문제는 실제로 생각보다 실제로 복잡합니다. 우리 네트워크에 하나 이상의 Ajax 요청이있을 때 문제가 발생하는 것 같습니다. 이 경우 Chrome은 훌륭하게 작동하지만 다른 브라우저는 무기한 기다립니다. 서버 측에서는 모든 호출이 클라이언트로 되돌아갑니다. –

관련 문제