1

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));

ヘルプは大歓迎です...

4

1 に答える 1

1

まず、jsonには2つのアイテムノードがありました。json_encodeのアイテムとmyobj文字列(現在は配列)のアイテム。これがdata.items[0]が機能していなかった理由であり、data.items.items[0]である必要がありました。そうは言っても、私が最初に送信したのはインデックスではなくキーを使用していたため、実際にはdata.items.items.keyである必要がありました。そうは言っても、私が含めた現在の構造はもっと良いはずです。

次に、console.debugをさらに使用してみてください。コードを開発ボックスにコピーして実行し、オブジェクトがどのように見えるかを確認することで、jsonの問題のほとんどを見つけました(現在のconsole.debug(data)出力をjavascriptへのコメントに含めました)。chromesデバッグに関する情報へのリンクは次のとおりです: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>
于 2012-10-18T23:32:16.220 に答える