2015-01-07 2 views
-1

나는이 세 가지 기능을 가지고 상상 :

$(document).ajaxSuccess(function(event, xhr, settings) { 
    console.log('ajaxSuccess fired'); 
}); 

function doCall1() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('get', 'someurl.com', true); 
    xhr.send(); 
} 

function doCall2(){ 
    $.get('someurl.com'); 
} 

내가 doCall1 전화

ajaxSuccess가 발생하지 않습니다. 그러나 doCall2으로 전화하면 ajaxSuccess이 실행됩니다.

나는 사실 jQuery가 XMLHttpRequest의 onreadystatechange/readyState를 보지 않고 실제로 $ .ajax()의 다양한 메소드에 콜백 함수를 사용하고 있음을 이해한다. , 그러나 나는 아직도 완전히 이해하지 못한다.

누군가가 나에게 빠른 설명을 주거나 다른 문서를 보내 주면 나머지 부분을 가져올 수 있습니까?

+1

위해 xhr.send가 JQuery와 방법이 아닙니다 : 어떤 이유로 당신이 jQuery를하고 바닐라 JS 간의 상호 운용성 원한다면, 당신은 (CustomEvent에 대한 해당 브라우저 지원이 제한됩니다주의와) 이벤트를 직접 전달할 수 있습니다 그것을 가로 채지 않습니다. –

+0

jQuery는 jQuery 메서드를 통해 작성된 AJAX 요청 만 추적 할 수 있습니다. XHR은 기본 JS입니다. –

+0

jquery의 콜백 (ajaxSuccess) xhr은 jquery의 일부가 아니며 해당 기본 – atmd

답변

1

ajaxSuccessajaxComplete 메서드는 jQuery의 일부이며 jQuery 함수에 의해서만 트리거되기 때문에 그게 전부입니다.

XMLHttpRequest은 기본 javascript 개체이며 jQuery와 관련이 없습니다.

-1

한 가지는 지연자를 갖는 jQuery 객체이고 다른 하나는 콜백을 직접 부착해야하며 jQuery의 ajaxSuccess로 전달할 수 있습니다 (jQ는 기본 XMLRequest 객체를 래핑합니다) . ajaxSuccess/ajaxComplete을 트리거

+1

귀하의 투표를 설명하십시오. – BananaAcid

0

코드는 등 $.ajax(), $.get(), $.post()의 마지막에 기록 된 상기 이벤트 jQuery를 관련되고 $.ajax(), $.get(), $.post() 함수의 jQuery 함수이다.

XHR은 기본 JavaScript이며 jQuery와 관련이 없습니다.

3

다른 사람들이 언급했듯이 ajaxSuccessajaxComplete은 jQuery에 의해 추가 된 넌 - 네이티브 이벤트입니다. JQuery와 따라서

var event = new CustomEvent("ajaxComplete"); 
document.dispatchEvent(event); 
+0

흥미 롭습니다! 감사 –

관련 문제