2012-11-18 4 views
-1

이 json을 PHP 페이지에서 반환하지만 jquery는 디코딩 할 수 없으며 결과는 항상 null입니다.jquery는 json을 인코딩 할 수 없습니다

{ 
    "City": [ 
     { 
      "CityID": "1", 
      "CityName": "istanbul" 
     }, 
     { 
      "CityID": "2", 
      "CityName": "Ankara" 
     } 
    ] 
} 

JQuery와 코드 :

 $.getJSON("handlers/cityhandler.php", function(json){ 
    var result = jQuery.parseJSON(json); 
console.log(result[0].City.CityID); 

JQuery와 대체 코드 :

$.getJSON("handlers/cityhandler.php", function(json){ 
      $.each(json, function(i,City){ 
        $("#selectcity").append('<option value="' + City.CityID + '">' + City.CityName + '</option>'); 
      }); 
+0

어쩌면 대신 $의 .each'의 ('json.City'을 $의 .each를 작성해야합니다 (json' ? – Inferpse

답변

3
console.log(json.City[0].CityID);​ 
+0

This Worked.Thanks 많은, 나는 이것을 몇 시간 동안 풀려고 노력했다. – Codette

+0

멋지다, 문제 없음 :-) –

+0

오, 좋은 캐치, 나는 배열 색인을 추가하는 것을 잊었다. +1 – nbrooks

0

귀하의 JSON 출력이 유효 JSON, 그래서 문제가 거기에서 오는되지 않습니다. 이것이 jQuery 핸들러가받는 것과 정확히 일치합니까?

사이드 노트, 결과 [0]이 존재하지 않습니다! 상위 요소는 배열이 아닌 객체입니다.

+0

나는 유효한 json을 받았다. 그러나 jquery.i로 디코드 할 수 없다는 것을 알았지 만, 다른 10 가지 방법을 시도했지만 여전히 값을 얻을 수 없다. – Codette

2

데이터를받은 후 데이터가 이미 구문 분석되었으므로 $.parseJSON으로 전화 할 필요가 없습니다. 또한, 널 포인터 예외가 발생하는 이유는 result[0]이 존재하지 않기 때문입니다. 결과는 정규 배열이 아닌 연관 배열입니다.

$.getJSON("handlers/cityhandler.php", function(json){ 

    console.log(json.City[0].CityID); 
}); 

두 번째 시도도 올바르지 않습니다. 당신이 도시를 통해 루프하려는 경우 반드시 내부 배열을 통해 루프 :

$.getJSON("handlers/cityhandler.php", function(json){ 
    $.each(json.City, function(i, val){ 
     $("#selectcity").append('<option value="' + val.CityID + '">' 
      + val.CityName + '</option>'); 
    }); 
}); 
+0

이것은 어떤 이유 때문에 정의되지 않은 것을 보여준다. – Codette

+0

@ tfeseas 그래, 첫 번째 코드 블록에서 배열 인덱스를 잊어 버렸습니다. 두 번째는 잘 작동해야합니다. 또한 일반적으로 데이터 구조에 문제가있는 경우 먼저 콘솔의 작은 부분을 로깅 해보십시오. log (json)','console.log (json.City)' ... 그리고 당신은 빨리 배열이 무엇인지 알지 못할 것입니다. – nbrooks

관련 문제