2011-05-03 5 views
1

데이터를 처리하고 결과를 표시하는 PHP 스크립트에 대해 일부 아약스 호출을해야합니다.jquery ajax call abort

하지만 전화가 시간 초과 된 것처럼 보입니다. 크롬과 파이어 폭스에서 빨간색으로 표시되는 전화를 확인할 때

내 아약스 코드 :

$.ajax({ 
    type: "POST", 
    url: "/toimport", 
    data: ({"filename": $("#file").val(), "search_engine": $("#engine").val(), "matchtype": $("#matchtype").val(), "year" : $("#year").val(), "country" : country, "sheet" : i, "filetype": file_type}), 
    success: function(data, textStatus, jqXHR){ 
     $("#message").append(data); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown){ 
     $("#message").append(textStatus + '<br />'); 
    } 
}); 

나는 (수신 된 값 중 하나를 반환), 모든 호출이 PHP가 AJAX 호출이 그 시간이 걸리는 경우에만이 성공적으로있는 PHP 코드가 사소한 할 때 실패합니다.

ajax 호출에서 시간 초과를 시도했지만 작동하지 않습니다. 반환 된 textStatus는 'error'입니다. errorThrown은 비어 있습니다.

감사

+0

응답 헤더를 확인하여 서버가 오류 코드로 반환하는 것을 확인합니다 (예 : 방화 광). 어쩌면 귀하의 완전한 PHP 스크립트에 의해 제기 500 내부 서버 오류가 발생했습니다. 대부분의 경우 서버는 진정으로 오류로 응답합니다. – DanielB

+0

실패한 호출에 대한 응답 헤더가 없습니다. – Jon

답변

1
당신은 전화를이 방법으로 당신의 AJAX를 처리 할 수 ​​

:

ajaxCall.abort(); 

당신이 필요합니다 : 당신이 AJAX 호출에 대한 참조가있는 경우 당신은 당신의 전화를 중단 할 수 있습니다

var ajaxCall = $.ajax(options); 

을 귀하의 Ajax 호출이 완료되었는지 또는 귀하의 abort 요청에 대한 오류를 피하기 위해 계속 노력하고 있는지 확인하기 위해 추가 검증을하십시오.

+0

어떻게 확인합니까? – Jon

+1

모든 아약스 호출에는 'readyState'와 같은 속성이 있습니다. '1', '4'등이 될 수 있습니다. 따라서 아약스 호출을 중단하면 예외가 발생하고 예외가 발생할 수 있기 때문에 완료되지 않았 음을 알아야합니다. – Edgar