2014-01-10 59 views
11

如何使用javascript訪問服務器的響應。 這是json編碼的數據。如何使用javascript訪問數組的JSON編碼數據

 [{"cid":"1234","city":"value1","district":"value2","state":"value3"}] 

在此先感謝。

這是Ajax代碼:

function cityauto(ctid){ 
    var city = document.getElementById(ctid); 
    if(city.value.length > 3){ 
     $.ajax({ 
      type: "GET", 
      url: "city.php", 
      data: {term: city.value}, 
      success: function (data){ 
       alert(data); 
      } 
     }); 
} 

HTML代碼:

<input type="text" name="city" id="cty" onblur="cityauto(this.id);" /> 

的onblur我收到上述警告框從PHP文件的響應,現在我需要訪問,在javscript值。

+0

給我你的代碼 –

+0

請提供更多關於你想做什麼的信息,你已經嘗試了什麼以及你的代碼如果有的話 –

+2

我認識一個叫傑森的人,也許他會知道...... ** JSON!** – musefan

回答

15

假設JSON返回爲一個字符串:

var data = '[{"cid":"1234","city":"value1","district":"value2","state":"value3"}]'; 
// Parse the data as json 
var obj = JSON.parse(data) 
// Access the ojbect: 
console.log(obj); 
console.log(obj[0]);  // == Object {cid: "1234", city: "value1", district: "value2", state: "value3"} 
console.log(obj[0].cid); // == 1234 

[0]是訪問內的第一對象JSON,這是一個數組。然後,您只需添加.name,其中'name'是您想要的變量的名稱。 (如.cid)。

如果JSON已經是一個對象,你可以跳過JSON.parse()

var obj = [{"cid":"1234","city":"value1","district":"value2","state":"value3"}]; 

,並獲得它像上面的例子。如果您recive從響應

success: function (data){ 
    var obj = JSON.parse(data); 
    // Do stuff with `obj` here. 
} 
+0

謝謝。它工作正常。 – NiksD

+0

@NiksD:沒問題!請考慮標記爲答案;) – Cerbrus

+0

已標記。 :) – NiksD

3

如果這是唯一的響應數據,那麼您可以作爲訪問:

var data = [{"cid":"1234","city":"value1","district":"value2","state":"value3"}]; 
console.log(data[0].cid); 

# "1234" 
+1

感謝您的回覆。但是那裏需要JSON.parse(數據)。控制檯語句之前。 – NiksD

+0

您是否在成功回調ajax時獲取了字符串數據? – ram

+0

m如上所述獲取數據陣列。 – NiksD

-2


(在這種情況下,這個問題更多的是訪問JavaScript對象,而不是JSON)

在你的情況,你可以訪問的數據是這樣頁面,那麼你可以使用jQuery

$.getJSON("yourwebsite.com/yourpage", function(data) { 
     console.log(data); 
}); 

如果你想使用它作爲一個變量,從純JSON(而不是從另一頁/請求accesing吧)

嘗試 $.getJSON方法

var data = '[{"cid":"1234","city":"value1","district":"value2","state":"value3"}]';

然後你可以使用

$.each(data, function(key, val) { 
      console.log(key + ":" + val); 
    }); 

訪問一個foreach常規JSON數據...例如data[0].cid0

或者data[key].innerykey是您的數據的第一陣列,並且.cid是要檢索的關鍵字,可以是cidcity或任何你想要的,如果你有更多的,你可以使用不同的號碼data[X]

+0

在哪裏可以找到函數'$ .getJSON'? – musefan

+0

忘了告訴jquery:P –

+0

感謝回覆@ user1381537 – NiksD