2012-11-18 71 views
-1

我從我的php頁面返回這個json,但jquery無法解碼它,結果始終爲空。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

也許你需要寫'$。每次(json.City',而不是'$。每個(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]不存在:result是關聯數組,而不是常規數組。

$.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

這顯示undefined由於某種原因,這就是問題 – Codette

+0

@ tfeseas是的,我忘了第一個代碼塊中的數組索引,第二個應該工作的很好,另外,一般來說,如果你遇到了數據結構的問題,可以嘗試首先記錄它的一小部分,比如'console。日誌(json)','console.log(json.City)' ...你會很快意識到什麼是數組,什麼不是。 – nbrooks