2011-11-22 4 views
0

나는이 사건을 가지고와 값의지고 (JSON 문자열 내 서버에서 반환) : 요청의이 종류를 사용하는 경우에는는 JSON 문자열 자바 스크립트와 평가, 자바 스크립트

{"success": true, "users": [1, 3, 4, 8]} 

, 내가 것을 얻을 것 는 "문자열"로 응답 :와

var availableUsers = $.ajax({ 
    url: absPath + '/users/findUsers', 
    type: 'POST', 
    data: {contents: $('#messageTo').val()}, 
    dataType: 'json', 
    async: false 
}).responseText; 

: alert(typeof(availableUsers)); 내가 불렀 : string 반환 값을 typeof에서.

이 일 때 :

window.eval(availableUsers); 그것은 평가되지 않습니다 예상대로, 자바 스크립트 객체로.

유효한 JSON 응답 (async : false 사용)을 JavaScript 액세스 가능한 객체로 변환하려면 어떻게해야합니까? 아니면 서버에서 반환 된 문자열을 효과적으로 평가할 수 있습니까?

감사합니다. 응용 프로그램/JSON 에 대한 요청의 내용 유형을 설정

+1

/users/findUsers에 대한 요청에서 반환 된 콘텐츠 유형 헤더를 확인하십시오 –

+1

가능한 복제본 [javascript에서 json을 구문 분석하는 방법] (http://stackoverflow.com/questions/4935632/how-to-parse-json- in-javascript) –

+1

여기에'success' 콜백을 사용하지 않는 이유가 있습니까? 'async : true'라고하더라도, 이것은 더 읽기 쉽고, b) 예상 한대로 할 가능성이 더 높습니다. 나는 jQuery의 자동 JSON 파싱이'.responseText'로 시작될 것이라고 생각하지 않는다. – nrabinowitz

답변

0

왜 콜백에서 JSON 개체를 얻을? success 설정을 확인하십시오.

$.ajax({ 
    url: absPath + '/users/findUsers', 
    type: 'POST', 
    data: {contents: $('#messageTo').val()}, 
    dataType: 'json', 
    success: function(data){ 
     var availableUsers = data; 
     alert(typeof availableUsers); 
    }, 
    async: false 
}); 

콜백을 사용하면 서버에서 가져온 객체로 원하는 것을 수행 할 수 있습니다.

+0

내 availableUsers는 전역 변수이며 $ .ajax ({}) 아래의 익명 함수 밖에서 필요합니다! $ .parseJSON이 트릭을 도왔습니다.) –

+0

@ 명령 : 그럼'var'을 제거하십시오. 그러나 솔직히 동기 요청을 사용하면 안됩니다. 그들은 대부분의 경우에 필요하지 않습니다. –