0

問題は、firebug を介して既に json の値を確認できることですが、問題はそれをテーブルに追加することです。json_encode を echojson_encode(array('red'=>$red, 'blue'=>$blue));からに変更json_encode($blue);して、ajax が実際に機能するかどうかを確認してから、 myをjson_encode($blue);に変更すると、完全に表示されます私のテーブルですが、青い配列のみで、青と赤の両方の配列が必要です。だから私は何が間違っているか知りたいですか、それとも何かが欠けていますか?toAppend += '<tr><td>'+data.red[i]['warrior_name']+'</td><td>Name</td><td>'+data.blue[i]['warrior_name']+'</td></tr>';toAppend += '<tr><td>'+data[i]['warrior_name']+'</td></tr>';

これが私のPHPコードです:

   //get blue_team attributes
$blue = array();

$blue_result = $db->dataWarrior($battle_id,$blue_name);

foreach($blue_result as $warrior){
    $blue[] = $warrior;
}

//get red_team attributes
$red = array();

$red_result = $db->dataWarrior($battle_id,$red_name);

foreach($red_result as $warrior){
    $red[] = $warrior;
}

    echo json_encode(array('red'=>$red, 'blue'=>$blue));

ここに私のajaxコードがあります:

$.ajax({
                url: "battle_review.php",
                type: "post",
                datatype: "json",
                data: { 
                    bname: blue_name,
                    btype: blue_type,
                    rname: red_name,
                    rtype: red_type },
                success: function(data){
                    var toAppend = '';
                    if(typeof data === "object"){
                        for(var i=0;i<data.length;i++){
                            toAppend += '<tbody>';
                            toAppend += '<tr><td>'+data.red[i]['warrior_name']+'</td><td>Name</td><td>'+data.blue[i]['warrior_name']+'</td></tr>';

                            toAppend += '</tbody>';
                        }
                        $("#battledata").append(toAppend);
                    }
                }
            });
4

1 に答える 1

1

出力の構造は、それを適切に反復するにはかなり悪いです。ただし、常に同じ要素数を持っていると仮定するredblue、次のことができます。

$.ajax({
    url: "battle_review.php",
    type: "POST", // uppercase
    dataType: "json", // uppercase T
    data: {
        bname: blue_name,
        btype: blue_type,
        rname: red_name,
        rtype: red_type
    },
    success: function(data) {
        var toAppend = '';
        for(var i = 0; i < data.red.length; i++) {
            toAppend += '<tbody>';
            toAppend += '<tr><td>' + data.red[i].warrior_name. + '</td><td>Name</td><td>' + data.blue[i].warrior_name + '</td></tr>';

            toAppend += '</tbody>';
        }
        $("#battledata").append(toAppend);
    }
});

このような配列はよりきれいになります:

[{"red": ..., "blue": ...},
 {"red": ..., "blue": ...},
]

次に、単純にそれを反復処理して、要素のredおよびプロパティにアクセスできます。blue

$.each(data, function(i, row) {
    // row.red
    // row.blue
});
于 2012-09-16T14:35:13.503 に答える