【问题标题】:Access JSON data in javascript在 javascript 中访问 JSON 数据
【发布时间】:2014-01-23 13:33:30
【问题描述】:

我正在使用 $.post() jQuery 函数。我得到以下数据

当我使用代码 alert(data); 提醒返回的数据时。

[{"sn":"2","res_id":"101","res_owner_id":"28","res_address":"uk,london"}]

我想获得像sn = 2 这样的单个数据值。

我尝试使用代码alert(data[0].sn);

我阅读了下面的 stackoverflow 帖子。

How can I get value through JSON array like query

Search an array for matching attribute

get one item from an array of name,value JSON

但找不到任何解决方案。

谁能帮我获取单个数据??

谢谢

【问题讨论】:

  • 你收到的是纯字符串,它还不是一个对象。使用 parse 方法将其转换为基于 json 标准的对象。然后您可以将其视为对象并使用 . (点)访问值。

标签: javascript php jquery json


【解决方案1】:

您可以在 JSON 字符串上使用 JSON.parse() 将其转换为 JavaScript 对象。

data = JSON.parse(data);
alert(data[0].sn);

如果您在调用$.post() 方法时将dataType 指定为json,那么jQuery 应该能够自动为您执行此操作。

【讨论】:

    【解决方案2】:

    您的数据似乎不是JavaScript object(它是字符串)首先将您的数据转换为JavaScript objectJSON.parse(data) 然后alert(data[0].sn)

    【讨论】:

    • sMr 完全倒退了。它 JSON 格式,需要转换成JavaScript 数组。
    • @Quentin 否,如果它是警告消息中的 json 对象,用户应该会看到类似 object [] object 的消息。
    • 我认为 sMr 将“JavaScript 对象”称为“JSON 对象”,因此会造成混淆。没有“JSON 对象”。有“JSON 字符串”和“JavaScript 对象”。 JSON 代表“JavaScript 对象表示法”。
    • @Quentin 我想你的意思是对象
    • @superphonic — 我不知道。 JSON 文本的外部是 [] 而不是 {}
    【解决方案3】:

    当您运行alert 时,您会得到一个包含您的数据的字符串(而不是[Object object] 或类似的)。这意味着 jQuery 没有将响应识别为 JSON,因此它没有解析它。

    您应该在服务器上通过使响应具有Content-Type: application/json HTTP 响应标头来解决此问题。

    您可以通过将 "JSON" 作为第四个参数添加到 $.post 来破解此问题(告诉 jQuery 忽略服务器所说的数据并将其解析为 JSON)。

    【讨论】:

      【解决方案4】:

      如果你使用 jQuery,你可以使用

      var new_data = $.parseJSON(data);
      alert(new_data[0].sn);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-21
        • 1970-01-01
        • 1970-01-01
        • 2015-04-06
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2020-12-26
        相关资源
        最近更新 更多