1

サーバーからこのjsonデータがあります

{

"store":[{"skey":"asdsad123das","name":"Store1"},  {"skey":"3308d976d2647659f130d09593be845a","name":"joji store"}],

"manager":[{"mkey":"asdsad123das","name":"manager 1"},{"mkey":"asdsad123da2","name":"Manager 2"},{"mkey":"asdsad123da3","name":"Manager 3"}]

}

そのデータを読みたい。私がそれを読もうとすると、いつも undifined になります。私はこのようなことをしています

 success: function(msg){

            //alert(msg['store'].name);
            for (var keys in msg)
            {
                    //alert(keys);
                    alert(keys['name']);
                    for (var data in keys)
                    {
                            alert(data);

                    }
            }
      },
4

2 に答える 2

2

一般に、(JSON データまたは他の場所から取得した) 名前付きキーを持つオブジェクトがある場合、それらのキーを反復処理する必要はほとんどありません。これらのキーを具体的に名前で参照する可能性が高くなります。結局のところ、 astoreは a とはまったく違うものmanagerですね。

$.each()ほとんどの場合、ストアとマネージャーの両方を反復処理して同じことを行うループ (または のような同等のもの) を記述することはあまり意味がありません。おそらく、ストアに対しては 1 つのことを行い、マネージャーに対しては別のことを行いたいと思うでしょう。

OTOH、ここにある特定のデータを使用すると、店舗レコードはマネージャー レコードによく似ています。それぞれに名前があります。違いは、ストアには がskeyあり、マネージャーには があることmkeyです。したがって、データをログに記録する目的だけで、次のようなことができます ( fiddle ):

var data = {
    "store": [
        { "skey": "asdsad123das", "name": "Store1" },
        { "skey": "3308d976d264", "name": "joji store" }
    ],
    "manager":[
        { "mkey":"asdsad123das", "name":"manager 1" },
        { "mkey":"asdsad123da2", "name":"Manager 2" },
        { "mkey":"asdsad123da3", "name":"Manager 3" }
    ]
};

function success( data ) {
    list( data.store, 'skey' );
    console.log( ' ' );
    list( data.manager, 'mkey' );
    function list( array, key ) {
        $.each( array, function( i, item ) {
            console.log( item[key], ':', item.name );
        });
    }
}

success( data );

data.storeおよび を使用しdata.managerて、2 つの個別の配列のそれぞれにアクセスしていることに注意してください。(そして、「メッセージ」の略語のように聞こえるため、data代わりにそれを呼び出しました。これは、どのような種類のメッセージでもないようです。)msgmsg

ただし、配列自体は似ているため、共通の関数を使用してそれぞれをログに記録しました。skeyその関数は、またはを使用するかどうかを示すパラメータを取りますmkey

このデータを扱う実際のコードでは、 a で行うことと amanagerで行うことは非常に異なるためstore、それらの間でこれほど共通のコードを使用することさえできない場合があります。しかし、そのデータに確実にアクセスできるようになれば、そこから理解することができます。

最も重要なヒント: お気に入りのブラウザーで JavaScript デバッガーを使用する方法を知っていますか? Chrome に組み込まれているものをお勧めしますが、Firefox 用の FireBug と Internet Explorer の組み込みデバッガーもあります。

コードにステートメントを追加debugger;し、デバッガーを開いた状態でページを読み込むと、そのコード行で停止し、ローカル/ウォッチ パネルで変数を確認し、コンソールを使用して試すことができます。彼らが何をするかを見るためにさまざまな表現。コードをシングル ステップで実行したり、関数にステップ インしたりすることもできますalert()。これ以上使用する必要はありません。これは、コードをデバッグするためのはるかに優れた方法であることがわかります。

Chrome デベロッパー ツールに関する情報は次のとおりです。以前にこれらのデバッグ ツールを使用したことがない場合は、他のすべての作業を真剣に中止し、それらに慣れる必要があります。それは非常に報われるでしょう。

于 2013-07-13T21:52:56.040 に答える