Jquery jqXHR 대상 의 속성 과 방법

8415 단어 jquery
jQuery 1.4 이전 (1.4 포함), $. ajax () 방법 은 브 라 우 저 원생 의 XML HttpRequest 대상 을 되 돌려 줍 니 다.
 
jQuery 1.5 부터 $. ajax () 방법 은 jQuery 자신의 XML HttpRequest 대상 (일반적으로 jqXHR 로 약칭) 을 되 돌려 줍 니 다.이 는 jQuery 1.5 가 지연 대상 jQuery. Deferred 를 도입 하여 리 셋 함 수 를 더욱 잘 처리 하고 실행 할 수 있 도록 하기 때문이다.
 
jqXHR 대상 은 jQuery 가 스스로 위조 한 XML HttpRequest 대상 과 $. Deferred 대상 의 결합 체 라 고 간단하게 이해 할 수 있 습 니 다.
 
jqXHR 는 브 라 우 저 원생 XML HttpRequest 대상 의 초 집합 입 니 다.예 를 들 어 responseText 와 responseXML 속성, getResponseHeader () 방법 도 포함 합 니 다.
전송 메커니즘 이 XMLHttpRequest 대상 과 같 지 않 을 때 (예 를 들 어 < script > 태그 로 JSONP 요청 을 완료 합 니 다) jqXHR 대상 은 가능 한 한 로 컬 XMLHttpRequest 대상 의 기능 을 모 의 합 니 다.
 
jQuery 1.5.1 부터 jqXHR 대상 도 overrideMimeType () 방법 을 지원 합 니 다 (1.4. x 에서 도 사용 할 수 있 지만 1.5 에서 임시 제거 되 었 습 니 다).overrideMime Type () 방법 은 beforeSend () 의 반전 함수 에 사용 할 수 있 습 니 다. 예 를 들 어 Content - Type 응답 헤드 를 수정 하 는 데 사 용 됩 니 다.
 
jQuery 1.5 부터 $. ajax () 가 되 돌아 오 는 jqXHR 대상 은 Promise 인 터 페 이 스 를 실 현 했 습 니 다. 모든 속성, 방법 과 행 위 를 포함 합 니 다.따라서, 우 리 는 jqXHR 를 통 해 이번 $. ajax () 에 AJAX 를 연결 하여 대응 하 는 상태 에서 실행 할 수 있 는 리 셋 함 수 를 간단하게 요청 할 수 있 습 니 다.
우 리 는 완전한 jqXHR 대상 을 해부 함으로써 jqXHR 대상 의 속성 과 방법 을 이해한다.
var jqXHR = {
    abort: function (statusText){
        //
    },
    always: function (){
        //       (       )               
    },
    complete: function (){
        // always()     ,      (       )               
    },
    done: function (){
        //                      
    },
    error: function (){
        // fail()     ,                     
    },
    fail: function (){
        //                                      
    },
    getAllResponseHeaders: function (){
        //                      
    },
    getResponseHeader: function (key){
        //                  
    },
    overrideMimeType: function (type){
        //    Content-Type           
    },
    pipe: function (){
        // then()      ,        、  、                         
    },
    progress: function (){
        //    Deferred                   
    },
    promise: function (obj){
        //         Promise      ,    Promise    
    },
    readyState: 4, //      
    responseText: "<!DOCTYPE html><html>......</html>", //        
    setRequestHeader: function (name, value){
        //      
    },
    state: function (){
        //      Deferred        ,  :"pending"、"resolved"、"rejected"               
    },
    status: 200,
    statusCode: function (map){     
        //                   
        // map  :{ 301:function(){}, 404:function(){} }     
    },
    statusText: "OK", //            
    success: function (){
        // done()     ,                     
    },
    then: function (){
        //         、  、                             
    }
};

 
앞에서 말 했 듯 이, 우 리 는 jqXHR 를 통 해 이번 $. ajax () 에 AJAX 를 연결 하여 대응 하 는 상태 에서 실행 할 수 있 는 리 셋 함 수 를 매우 간단하게 요청 할 수 있 습 니 다.
$. ajax () 방법 이 실행 되면 jqXHR 대상 을 되 돌려 줍 니 다.왜냐하면, 우 리 는 사실 없 을 수 있 기 때문이다 $.ajax () 방법의 매개 변수 에서 리 셋 을 지정 하고 체인 쓰기 로 전환 합 니 다. jqXHR 대상 의 각 방법 으로 리 셋 을 지정 합 니 다.
$. get (), $. post () 같은 쌍 $.ajax () 는 재 포장 방법 을 진행 하 였 습 니 다. 방법 자체 의 매개 변 수 는 error 설정 등 리 셋 을 지원 하지 않 습 니 다. 그러면 우 리 는 위 에서 말 한 방법 으로 이 목적 을 달성 할 수 있 습 니 다.
// 1
$.ajax({
  url: '/some.js',
  type: 'get',
dataType: 'script'
}).success(function () { //... }).error(function () { //... })
// 2
$.get('/some.js', function () {
  //...
}, 'script').error(function () {
  //...
})

좋은 웹페이지 즐겨찾기