获取存储在HTML元素中的JSON

时间:2016-06-10 14:13:35

标签: javascript php jquery html json

我在页面上使用PHP

的HTML元素中有JSON
echo "<div id='json'>" . json_encode($response) . "</div>";

我想简单地使用jQuery将数据记录到控制台(暂时),但我得到的唯一回应是:

Object { }

这是我的jQuery

jQuery(document).ready(function(){
    var data = jQuery("#json").data();      
    console.log(data);
});

和示例JSON数据响应

{
"posts":{
  "attributes":{
     "dfp_post":3,
     "dfp_shortcode":"[dfp_ads id=1383]",
     "wildcard_pos":5,
     "wildcard_shortcode":"[widget id='wp_widget-46']",
     "twitter_id":"@TeamName",
     "twitter_pos":8,
     "facebook_id":"teamname",
     "facebook_pos":5
  },
  "0":{
     "post":{
        "id":3945,
        "pub_date":"2016-05-30 00:00:00",
        "title":"Trio to tour on back of Twickenham win",
        "excerpt":""
     }
  },

2 个答案:

答案 0 :(得分:1)

您需要使用 text() 来获取JSON内容,然后使用 JSON.parse() 对其进行解析。 data() 方法返回所有data-*属性值的对象,而不是文本数据。

jQuery(document).ready(function(){
    var data = JSON.parse(jQuery("#json").text());      
    console.log(data);
});

答案 1 :(得分:0)

虽然给出的答案解决了你的问题,但我想给你一个不同的答案:

将json directry存储为javascript var会更好。首先,您不必在以后获取它,其次,它绝不是将数据存储在html元素中的最佳选择。

所以我建议这样做:

echo "<script>jsonData=" . json_encode($response) . ";</script>";

然后没有必要从html中的字符串中获取和转换它....

以后你可以访问它(在你宣布它之后的任何地方):

<script>
   console.log(jsonData);
</script>