【问题标题】:Unable to get the values from JSON Array and Object [duplicate]无法从 JSON 数组和对象中获取值 [重复]
【发布时间】:2015-02-04 12:09:36
【问题描述】:

在我的 Javascript 和 PHP 中,我设法通过 .ajax 调用来获取数组。但是,当我想显示每个对象的值时,我无法这样做。

PHP:

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';

array_push($requestArray, $request);

echo json_encode($requestArray);

所以当我console.log(data) 时,它看起来像这样:

["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"]

当我console.log(data[0]) 时,我能够得到第一个对象:

{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}

但是,当我想像 console.log(data[0].request_id) 这样获取对象的值时,它会返回一个 undefined

如果有人能告诉我我的代码有什么问题,我们将不胜感激。谢谢。


【问题讨论】:

  • 您的响应是 JSON 表示字符串。你应该解析它: var result=JSON.parse(data[0]);然后 result.request_id 会给你你想要的..
  • 应该可以工作data[0]["request_id"]

标签: javascript php jquery arrays json


【解决方案1】:

["{"request_id":13,
注意 [ 之后的 "。这不是 javascript 控制台中包含对象的数组的输出格式,而是包含字符串的数组。
那是因为

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';

在您的 php 脚本中。您不是在此处构建哈希图/对象,而是在构建字符串。它是由 json_encode 编码的。

试试看

$request = array(
    "request_id" => $requestId,
    "reqName" => $requestName,
    "reqSubject" => $requestSubjects,
)
array_push($requestArray, $request);

echo json_encode($requestArray);

【讨论】:

    【解决方案2】:

    您可以使用JSON.stringify() 将对象转换为字符串。

    试试看

    $request =  {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
     alert(JSON.stringify($request.request_id));
    

    【讨论】:

      【解决方案3】:

      您收到的回复是json 格式。你必须先解析它。试试 -

      var response = jQuery.parseJSON(data[0]); //parse json data
      console.log(response.request_id);
      

      【讨论】:

      • 我认为这可能是正确的,但答案应该解释为什么它是一个答案,而不仅仅是向读者转储代码。
      【解决方案4】:

      在你的帖子中你提到过

      “但是,当我想像这样获取对象的值时,
      console.log(data[0].request_id),它返回一个未定义的。"

      要将结果视为对象,应使用 JSON.parse() 方法将其解析为 JSON 对象
      否则,您可以将其用作数组

      数据[0]["request_id"]

      【讨论】:

      • data[0]["request_id"]data[0].request_id 在 JS 中是等价的。
      • 能否请您给出正确的解决方案。
      猜你喜欢
      • 2015-04-03
      • 2015-08-14
      • 2021-11-17
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多