2013-10-28 3 views
1

jQuery가 그 체인을 좋아하지 않는다는 것이 하나 있습니다. 발견 한 모든 샘플이 이것을 사용하고 있습니다. 그렇다면 체인을 사용하지 않고 ajaxSuccess를 정의하는 방법이 있습니까? 나는 이것을 시도했으나 효과가 없다.jQuery ajaxSuccess() 이벤트 핸들러

jQuery.ajax({ 
    dataType: "json", 
    url: this.DIRECTORY_PHP, 
    data: data, 
    success: this.handleSuccessEvent 
}); 
+1

잘 작동합니다. 어떤 방법으로 작동하지 않습니까? 나는 당신이 컨텍스트'this'를 잃어 버리고 있고 그것이 아약스 요청 때문에 있다고 가정하고 있다고 생각합니다. –

+0

당신은 일반적인 성공 핸들러 (글로벌)를 의미하거나 위에서 수행 한 것처럼 AJAX 호출에 성공 함수를 전달합니까? – tymeJV

+0

여러분, 고맙습니다. 문제는 이벤트 처리기에 없다고 생각합니다. 난 그냥 "오류"처리기를 추가하고 작동합니다. 많이 확인하지 않고 질문을 제기하여 죄송합니다 :) –

답변

3

일반적인 참고 : 만 handleSuccessEvent 컨텍스트 (this)의 의미를 갖는 것

$.ajax({ ... }).done(function1).done(function2) 
// can be split into : 
var ajaxReq = $.ajax({ ... }); 
ajaxReq.done(function1); 
ajaxReq.done(function2); 
2

경우, 예를 들어 작업 것이다 : 항상 disctinct 통화의 연속으로 나눌 수 있습니다 "체인" . 기존의 선언 된 함수 이름으로 바꾸고 (as in documentation) 작동합니다.

var myFunction = function(data){ /* TODO */ }; 
jQuery.ajax({ 
    dataType: "json", 
    url: this.DIRECTORY_PHP, 
    data: data, 
    success: myFunction 
}); 

변수에 익명의 기능 할당은 전적으로 선택 사항이며 해당 구문의 유연성을 보여주기 위해 작성되었습니다. 이 접근법을 따르는 것이 좋습니다.

function myFunction(data){ 
/* TODO */ 
} 

jQuery.ajax({ 
    dataType: "json", 
    url: this.DIRECTORY_PHP, 
    data: data, 
    success: myFunction 
});