2009-04-15 3 views
40

사용자가 버튼을 클릭 할 때 jQuery의 .load() 메서드를 사용하여 일부 데이터를 검색하고 있습니다.jQuery의 load() 메서드에서 오류를 catch하는 방법

로드가 성공적으로 완료되면 결과를 <div>에 표시합니다.

데이터를 검색하는 중에 load()에 오류가 발생하는 경우가 있습니다.

load()에서 오류를 어떻게 잡을 수 있습니까?

답변

5

load()는 콜백을 제공합니다.

콜백.
ajax 요청이 완료되었을 때 호출되는 함수입니다 (반드시 성공한 것은 아닙니다).

이것은 IIRC의 수행 방법입니다. Ólafur Waage에서 알 수 있듯이, 당신은 또한 페이지의 모든 아약스 통화 세계에서와 같이 글로벌 ("글로벌"오류 핸들러를 등록 할 수 있습니다 부하() 함수에 콜백을 전달 외에도

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) { 
     // XMLHttpRequest.responseText has the error info you want. 
     alert(XMLHttpRequest.responseText); 
}); 
+7

함수의 첫 번째 인수는 IS responseText입니다. XMLHttpRequest.responseText를 사용할 필요가 없습니다 ... –

10

(그것을 테스트하지 않은 경우)).

글로벌 아약스 오류 핸들러를 등록하기 위해 적어도 두 가지 방법이 있습니다 :

등록 바로 오류 처리기 ajaxError()와 :

$.ajaxError(function(event, request, settings) { 
     alert("Oops!!"); 
}); 

또는 오류 처리기 및 기타 속성에서 설정하는 ajaxSetup()를 사용 동시에 :

$.ajaxSetup({ 
    timeout: 5000, 
    error: function(event, request, settings){ 
     alert("Oops!"); 
    } 
}); 
66

load() documentation.

로드 오류가 발생하는 방법에 대한 그냥 약간의 배경 0

...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) { 
     if (textStatus == "error") { 
      return "oh noes!!!!"; 
     } 
}); 

편집 : 의견 요청에 따라 루트 경로가 아닌 다른 경로를 추가했습니다.

+0

감사 altCongnito.it가 작동합니다! btw, 다른 관련 질문을 할 수 있습니까? 다른 문제는 파일 경로입니다! 나는 asp.net를 사용한다. master 페이지에 load() 코드를 작성합니다. 매개 변수 URL은 feedsx.aspx와 같습니다. 콘텐츠 페이지가 루트 폴더 아래에있는 경우 작동합니다.하지만 콘텐츠 페이지가 다른 하위 폴더 아래에있는 경우 작동하지 않습니다. 도움이 –

+0

jquery 워드 프로세서에 대한 링크 주셔서 감사합니다. 나는 그들이 심지어 존재했다는 것을 몰랐다. –

+0

감사로드 실패는 대개 대상 페이지를로드 할 때 발생하는 문제 때문입니다. – Resh32

0

전동 공구 박스에 질문에 대한 답변으로 표시되는 "Loading content with jQuery AJAX and dealing with failures"이라는 기사가 있습니다.

분명히 지정한 콜백 함수는 응답, 상태 및 XmlHttpRequest 객체를 전달 받아 사용자가 아약스 요청의 상태를 확인하고 이에 따라 조건을 처리 할 수있게합니다.

관련 문제