$ .getJSON返回未定义的结果

时间:2012-10-18 23:10:39

标签: php javascript json undefined

我正在尝试打印简单的JSON数据以了解和了解JSON。我无法弄清楚我在这里做错了什么。

我在这里关注本教程 http://www.youtube.com/watch?v=rncW-74VL7U

这是我的JavaScript:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$.getJSON("json.php", function(data)
{
    //json.php get the JSON data from here
    //function(data) callback function
    var itemslist = data.items[0];

    document.write(itemslist.key);
});
</script>

这是PHP

<?php

// Set up the PHP to return the data in JSON format
header("content-type: application/json; charset=UTF-8" );

// This is a array of objects [key:"value", key2 : {k:"val", k2:"val2"}]
$myobj = '{items : [key:"value", key2 : {k:"val", k2:"val2"}]}';

$count = 2;

// Encode the above variables in JSON
echo json_encode(array("items" => $myobj, "count" => $count));

非常感谢帮助...

1 个答案:

答案 0 :(得分:1)

首先,你的json中有两个项目节点。 json_encode中的项目和myobj字符串中的项目(现在是数组)。这就是data.items [0]不起作用的原因,它需要是data.items.items [0]。也就是说,我第一次发送给你的是使用键而不是索引,所以它确实需要是data.items.items.key。所有这些都说,我所包含的当前结构应该更好。

其次,尝试使用console.debug。我只是将我的代码复制到我的开发盒上并运行它,通过查看对象的外观(我已将注释中的当前console.debug(data)输出包含在javascript中)找出了大多数json问题。以下是有关chromes debug的信息的链接:https://developers.google.com/chrome-developer-tools/docs/console

<强> PHP

<?php

// Set up the PHP to return the data in JSON format
header("content-type: application/json; charset=UTF-8" );

// This is a array of objects [key:"value", key2 : {k:"val", k2:"val2"}]
$myobj= array(
          "value",
           array("k"=>"val","k2"=>"val2")
          );

$count = 2;

// Encode the above variables in JSON
echo json_encode(array("items" => $myobj, "count" => $count));
?>

<强>的Javascript

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$.getJSON("json.php", function(data){
    console.debug(data);
    var itemslist = data.items[0];
            console.debug(itemslist);
    document.write(itemslist);
});

/*
Object
    count: 2
    items: Object
        0: "value"
        1: Object
            k: "val"
            k2: "val2"
*/


</script>