-1

次のようなデータがあります。

{
"1":{
    "id":"1",
    "boarding":"",
    "atak":"3",
    "pw":4,
    "zwrotnosc":3,
    "marynarze":130,
    "zolnierze":0},
 "2":{
    "id":"2",
    "boarding":"",
    "atak":"5",
    "pw":4,
    "zwrotnosc":4,
    "marynarze":0,
    "zolnierze":222}
}

for (i in data) または for (i = 1; i < data.length; i++) を試しましたが、間違っています。

php foreach のようなものを用意して、配列 data[1][pw] のように処理するとよいでしょう。

編集:

for ループを実行すると、194 回の反復が行われ、data[i] はデータから単一の文字を保持します。

EDIT2:

これはjson応答前の私のデータです:

Array
(
[1] => Array
    (
        [id] => 1
        [boarding] => 
        [atak] => 2
        [pw] => 4
        [zwrotnosc] => 4
        [marynarze] => 146
        [zolnierze] => 0
    )

[2] => Array
    (
        [id] => 2
        [boarding] => 
        [atak] => 5
        [pw] => 5
        [zwrotnosc] => 5
        [marynarze] => 0
        [zolnierze] => 250
    )

)

私が使う

echo json_encode($players);

EDIT3:

次のようになります: http://img20.imageshack.us/img20/4798/screenwlz.png

JSON は問題ないようです: http://img822.imageshack.us/img822/2871/screenmuj.png

編集:解決済み

Ok。ありがとう

それは役に立ちました:

data = jQuery.parseJSON( data );

for (i in data){
   // code
}
4

2 に答える 2

2

JSforがキーを反復処理することに気付いていないだけかもしれません。

for(var key in data) {
    var value = data[key];
    // do stuff
}
于 2012-06-28T19:13:03.297 に答える
1

forネストされたループを実行する必要があります。

// var data = <?php echo json_encode($players); ?>;
//            ^                                  ^
//            +----------------------------------+---- no quotes
var data = {
    "1": {
        "id": "1",
        "boarding": "",
        "atak": "3",
        "pw": 4,
        "zwrotnosc": 3,
        "marynarze": 130,
        "zolnierze": 0
    },
    "2": {
        "id": "2",
        "boarding": "",
        "atak": "5",
        "pw": 4,
        "zwrotnosc": 4,
        "marynarze": 0,
        "zolnierze": 222
    }
}
for (var i in data) {
    for (var j in data[i]) {
        console.log("data[" + i + "][" + j + "]", data[i][j]);
    }
}
于 2012-06-28T19:18:11.017 に答える