2014-06-05 10 views
2

원래 $ .ajax() 호출이 dataType: 'text'으로 이루어 졌는지 알고 싶습니다.

어쨌든 .done() 처리기에서 이것을 볼 수 있습니까? 나는 $.ajaxSettings()을 시도했지만 dataType에 대한 옵션이 표시되지 않습니다. 그 맥락에서,

.done(function(data){ console.log(this.dataType); }); 

this, 당신이 AJAX 호출을 시작했을 때 생성 된 jqXHR 객체를 나타냅니다 : 다음을 수행에 대해 어떻게

+0

'this' 키워드를 사용하십시오. my [answer] (http://stackoverflow.com/a/24071068/952310)를 참조하십시오. –

답변

3

명시 적으로 아약스 설정에 대한 context 인수를 설정하지 않는 경우는, 다음 .done()의 내부 this 포인터는 (추가 약속 방법과) 아약스 호출을 시작했을 때 생성 된 jqXHR 객체입니다. 해당 개체에는 dataType과 같이 사용 된 사용자 지정 설정이 포함되어 있습니다.

.done() 핸들러
this.dataType 

같이 :

$.ajax('example.php', {dataType: "json"}).done(function(data) { 
    var type = this.dataType; 
}); 

당신이 this 변경됩니다 context 속성을 사용하는 경우, 당신은 절약 할 수 있습니다 그래서, 당신은 단순히 dataType으로 참조 할 수 있습니다 ayax 호출을하고 해당 클로저를 통해 액세스하기 전에 로컬 변수에 dataType을 입력하십시오.

function yourFunc() { 
    var type = "json"; 
    $.ajax('example.php', {dataType: type, context: someOtherObject}).done(function(data) { 
     // can access the local variable type here 
    }); 
} 
+0

'this'가 무엇인지에 대해 엄격히 진실이 아닙니다. jQuery 문서에서 : "모든 콜백 내의'this' 참조는 설정에서'$ .ajax'에 전달 된'context' 옵션의 객체이며,'context'가 지정되지 않으면 이것은 Ajax 설정에 대한 참조입니다 그들 자신." - http://api.jquery.com/jQuery.ajax/#jqXHR –

+0

@MattTester - 좋아, OP가 'context' 인수를 사용하지 않는 경우 내 의견이 적용됩니다. 나는 그것을 반영하기 위해 나의 대답을 업데이트했다. – jfriend00

+0

그래, 때로는 '컨텍스트'에 대해 알아두면 유용합니다. 당신의 대답은 내 표를 얻는다 :) –

0

.

관련 문제