【问题标题】:How to access JSON encoded data of an array using javascript如何使用 javascript 访问数组的 JSON 编码数据
【发布时间】:2014-01-10 09:42:11
【问题描述】:

如何使用 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 中访问该值。

【问题讨论】:

  • 请提供更多信息,说明您不想做什么、您尝试过什么以及您的代码(如果有)
  • 我认识一个叫Jason的人,也许他会知道... JSON!!!
  • 我不知道如何访问它,因为我是 json 新手
  • 请提供有关您如何从服务器获得响应的信息,显示一些代码

标签: javascript


【解决方案1】:

假设 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"}];

然后像上面的例子一样访问它。
(在这种情况下,这个问题更多的是关于访问 JavaScript 对象,而不是 JSON)

在您的情况下,您可以像这样访问数据:

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

【讨论】:

  • @NiksD:没问题!请考虑将此标记为答案;)
【解决方案2】:

如果这是唯一的响应数据,那么您可以访问:

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

# "1234"

更正

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

var obj = JSON.parse(data);
console.log(obj[0].cid);

# "1234"

【讨论】:

  • 感谢您的回复。但是那里需要 JSON.parse(data) 。在控制台语句之前。
  • ajax成功回调中是否获取字符串数据?
  • m 如上所述获取数据数组。
  • 那你就不需要做JSON.parse(data)了。 JSON.parse 用于如果您的响应是包含 json 数据的字符串,如下面的“Cerbrus”解决方案中所述。
  • 是的!感谢您的回复。
【解决方案3】:

如果您收到来自页面的响应,那么您可以尝试使用 jQuery 的 $.getJSON 方法

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

如果您想将其用作变量,则来自纯 JSON(而不是从另一个页面/请求访问它)

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

然后就可以使用了

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

foreach 例程中访问 json 数据...

data[key].innerykey 例如data[0].cid 0 是您的第一个数据数组,.cid 是您要检索的键,它可以是cid city 或任何您想要的,如果你有更多,你可以在data[X]中使用不同的号码

【讨论】:

  • 在哪里可以找到函数$.getJSON
  • 忘了告诉 jquery :P
  • 感谢@user1381537的回复
  • 我想知道为什么投反对票,我的回答是有效的,我解释了如何以两种不同的方式使用json,谢谢
  • @user1381537 因为问题中没有任何地方,问题的作者也没有在代码中提到 jQuery。 jQuery 不是万能的解决方案,在大多数情况下,如果有人不要求 jQuery,请不要发布它,否则您会被否决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2014-11-01
  • 2020-12-26
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多