2011-03-18 6 views
2

jQuery, AJAX 및 JSON을 사용하여 웹 응용 프로그램을 개발하려고합니다. 는이 코드를 가지고 :JSON Object, undefined?

console.log(response.s); 
if (response.s == true) { 
    alert('good'); 
} else { 
    alert('bad'); 
} 

response (방화범에 console.log()을 통해)이 될 것으로 보인다 :

JSON 개체를 오른쪽 것 같다
{"s":true} 

? 글쎄, 여기에 추가 한 첫 번째 코드의 console.log(response.s); 줄은 undefined을 반환합니다. 뭐가 문제 야?

+0

Firebug 콘솔에서 { "s": true} 개체를 클릭하여 개체 (DOM) 탐색기에서 볼 수 있습니까? 아니면 Firebug 콘솔에 문자열로 쓰여져 있습니다 (클릭 할 수 없음)? – Nikhil

+0

@Nikhil, 나는 문자열 같아 보입니다. – Shoe

답변

7

typeof (response)은 무엇입니까? 문자열이라면 먼저 파싱해야합니다. (존재하지 않는 문자열의 s 필드를 액세스하는 것, 그래서 자바 스크립트는 예외 또는 무엇이든을 던지는 대신 당신에게 undefined 수 있습니다.)

+0

유형을 어떻게 확인할 수 있습니까? 어떻게 해석 할 수 있을까요? – Shoe

+0

글자 그대로'typeof (response.s)'를 콘솔에 입력하십시오. 'response.s.constructor'를 타자하면 그것이 무엇인지 알 수 있습니다. – Claudiu

+1

나는 당신이'typeof response'에 대해 물어볼 생각이라고 생각합니다. 그것이 "string"을 반환하면 OP는'jQuery.parseJSON (response)'을 호출해야합니다. –

1

을 응답의 content-type 다음 자바 스크립트 application/json없는 경우 아마 그것은 단지 문자열이라고 가정하고있을 것입니다.

따라서 올바른 콘텐츠 헤더를 제공하면 문제를 분류해야합니다.

또는 eval()을 사용하여 문자열을 json 개체로 변환 할 수 있습니다.

var obj = jQuery.parseJSON(response); 
console.log(obj.s); 

는 희망이 도움이 :

1

사용하려고합니다.