2012-09-16 23 views
0

问题是我可以看到我的JSON通过萤火虫的价值,但问题是它附加到我的表我试图将我的json_encode从回声json_encode(array('red'=>$red, 'blue'=>$blue));改为json_encode($blue);看我的ajax是否真的工作然后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>';然后它完美地显示在我的表格中,但只有蓝色数组,我想要蓝色和红色数组。所以我想知道什么是错,或者我错过了什么?如何检索json数组上的数组?

这里是我的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); 
        } 
       } 
      }); 

回答

1

您的输出的结构是在它适当的迭代非常糟糕。但是,假设redblue总是有相同的元素计数,你可以做THI:

$.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": ...}, 
] 

然后,你可以简单地遍历并访问redblue属性的元素:

$.each(data, function(i, row) { 
    // row.red 
    // row.blue 
}); 
+0

我怎么知道它是从我的蓝色还是红色的数组? –

+0

对不起,我只是在这个谢谢新的,我会尝试这 –

+0

谢谢它的作品!你说它有什么改善它的建议吗?如果它与你确定。 :) –