2012-09-09 15 views
3

XMLHttpRequest 오브젝트가 작동하는 방법에 대한 질문이 있습니다. https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest에서 속성 아래에서 나는 "응답"속성을보고 있습니다. 내 콘텐츠 유형이 json 인 경우 자바 스크립트 개체를 다시 가져와야한다고 설명합니다. 그러나 내 코드에서 xhr.response 속성은 undefined입니다.jquery에서 xhr의 json 응답에 액세스하십시오.

특히, .ajaxSuccess() 콜백이 DOM 요소에 설정되어 있고 (event, xhr, settings)이라는 매개 변수를받습니다. xhr.responseText은 json의 일반 텍스트 버전이지만 xhr.response는 정의되지 않습니다. $.parseJson(xhr.responseText)을 호출하지 않고 xhr에서 객체를 가져올 수있는 방법이 있습니까?

+0

서버가 "application/json"콘텐츠 유형을 반환하는지 확인하십시오. jquery가 json을 자동으로 구문 분석하지 않는 이유가 될 수 있습니다. – c69

+0

몇 가지 코드를 보여주십시오. – zerkms

+0

흠, 그렇습니다. 내 xhr.responseType도 정의되지 않았습니다. 하지만 내 서버 코드 (web.py 프레임 워크)에서는 web.header ("Content-Type", "application/json")를 호출합니다. xhr이 그것을 얻지 못하는 이유를 생각해 낼 수 있습니까? – nidoran

답변

1

난 당신이 은 이전의 상위 집합으로을 예정이다 $.ajaxSuccess()에서 사용하는 jQuery의 jqXHR 객체로 XMLHttpRequest 객체를 혼동 생각합니다.

대신, 데이터 유형이 json 당신 경우에 대한 JSON을 구문 분석하는 $.ajax()done 핸들러를 사용할 수 있습니다. 예를 들어 :

$.ajax({ 
    url: url, 
    dataType: 'json', 
}).done(function (response) { 
    // response is a JSON object, previously parsed by jQuery using $.parseJSON 
}); 

또한 참고 $.ajaxSuccess()의 문서는 더 이상 진정한 jQuery를 1.4.1의 등입니다 바닐라 XMLHttpRequest 객체, 를 얻을 수 있다고하더라도. 대신 getjqXHR 개체입니다.

+0

네, 이해합니다. 하지만 로컬 콜백을 사용하지 않고,이 문서 http://api.jquery.com/ajaxSuccess/에 따라 바닐라 XMLHttpRequest 객체를 얻는 .ajaxSuccess() 글로벌 콜백을 사용하고 있습니다. – nidoran

+0

@afwu :하지만 적어도 jQuery 1.4.1 이상을 사용하고 있다면 그렇지 않습니다. 이 바이올린을 확인하고'xhr instanceof XMLHttpRequest'의 결과를 봅니다. http://jsfiddle.net/9FD39/ –

+0

Joao, 고맙습니다. 그래서 만약 그 jqXHR 거기에 jqXHR의 속성을 내 json의 자바 스크립트 개체를 것 같아요? 그리고 버전이 1.7보다 큰 경우 어떻게 달라졌습니까? 감사합니다 – nidoran

관련 문제