【问题标题】:Can't access an element in JSON array无法访问 JSON 数组中的元素
【发布时间】:2017-03-25 16:15:13
【问题描述】:

没有人真正回答过这个问题,但究竟如何使用 JavaScript 直接从 php/mysql 使用这个 JSON 返回数据?

这是我使用 JSON.parse 并将其保存到 Javascript 变量 obj 后的返回数据

[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]

我尝试了简单的obj.stuname,但它只返回一个undefined,我尝试了很多次才能理解它,但我似乎根本无法使用这个数组。 有人可以帮忙吗?

我也尝试过reObj = {"stu":obj}; 样式,但它只返回一个 [object Object]

所以请有人详细说明一下?

【问题讨论】:

  • 你是如何从 php 获取的,也分享你的 ajax 请求代码?

标签: javascript html arrays json getjson


【解决方案1】:

obj 是一个 json array,所以你必须使用它的index 来访问一个元素。

此外,您必须使用 JSON.parse 才能将 stringjson 文本转换为 Javascript 对象。

试试这个:

var stuname=obj[0].stuname;

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]';
var objParsed=JSON.parse(obj);
console.log(objParsed[0].stuname);

如果要迭代array,请使用forEach 方法。

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]';
var objParsed=JSON.parse(obj);
objParsed.forEach(function(item){
  console.log(item.stuname);
});

【讨论】:

  • 此外,我正在使用来自 php 的 JSON 编码并通过 Json 将其发送到 Javascript,但当检索到的数据完美时,它只是说未定义
  • 谢谢老兄,这帮了大忙。但是如何在 for 循环中使用它?
  • 你的意思是当我有一个 JSON 字符串时?
【解决方案2】:
  1. 如果您通过 ajax 从 php 获得此响应。 请务必使用dataType 作为json 来获取json 类型的响应而不是字符串。

  2. 否则需要像这样解析json数据

    obj = JSON.parse(jsonStrFromPhp);
    

然后你可以获取数据作为 obj.stuname 或 obj[0].stuname 取决于你是如何从 php 中返回的,像这样{"stu":obj} 或者像这样[{"stu":obj}]

【讨论】:

  • 我得到了第二个。 [{}] 来自我的 php。我似乎无法直接解析它,因为如果我只解析它,它只返回一个[object Object],[object Object],所以我必须对其进行字符串化,然后再解析它以获得我的响应。但事实证明它解决了我的问题
【解决方案3】:

虽然我有偏头痛...为什么我的代码是错误的结果证明即使obj = JSON.parse(jsonStrFromPhp); 只返回一个[object Object],[object Object] javascript 可以真正理解小腿并返回我的变量...多么令人困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多