2011-09-05 4 views
1

필자의 방화 광에서 서버가 응답하는 것을 볼 수 있습니다 :parseJSON이 서버의 다음 응답에서 실패하는 이유는 무엇입니까?

{"status":"Results Found","errorcode":"0","result":[{"name":"test","id":"1"},{"name":"some","id":"2"}]} 


When I do the following I get a "o is null" error. 
$.ajax({ 
type: "get", 
url: "http://someurl", 
data: $("#eventsearch").serialize(), 
dataType: 'json', 
success: function(msg){ 
var o = $.parseJSON(msg); //o is NULL error 
} 

그러나 같은 문자열에 parseURL을했을 때 서버 응답이 아닐 때 모든 것이 좋습니다. 여기서 무슨 일이 일어나고있는거야?

var t = '{"status":"Results Found","errorcode":"0","result":[{"name":"test","id":"1"},{"name":"some","id":"2"}]}'; 

var o = $.parseJSON(t); //everything is good here 

답변

4

당신이 dataType:json을 설정할 때 JSON은 이미에 호출 dataType: 'json'을 지정하는 경우 당신은 당신이

console.log(msg.result[0].name); 
1

할 수

var o = $.parseJSON(msg);

할 필요가 없습니다 구문 분석 jQuery의 ajax 함수 msg는 이미 서버에서 반환 된 JSON 데이터를 구문 분석하여 만든 객체입니다. jQuery는 파싱 응답에서 작업을 수행합니다.

0

라인

var o = $.parseJSON(msg); //o is NULL error 

구문이 해당 오류를 생성 할 수 없습니다. parseJSON이 null을 반환하더라도 null 값을 새 변수에 할당하면 (즉각 무시한) 오류가 아닙니다.

관련 코드를 모두 표시하지 않습니까?

아마도 ajax 작업이 완료되기 전에 o을 사용하려고하면 문제가 발생합니까? 즉, 성공 콜백이 호출 될 때까지 기다리지 않고 문제가 발생했을 수 있습니다.

1
console.log(msg.result[0].id); // gives u 1 
console.log(msg.result[1].id); // gives u 2 
관련 문제