2014-01-10 61 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