我正在向jQuery发送一个数组,然后循环遍历这些值并显示它们,但我可以让它正常工作。有人能指出我正确的方向 -
PHP - 唯一重要的部分 - echo json_encode($tR);
jQuery -
$(document).on('click', '.chooseStat', function(){
var id = $(this).attr('id');
$.post('chooseStat.php', {id:id}, function(data){
console.log(data);
var open = '';
for(var i = 0; i < data.length; i++) {
if (i % 2 == 0) {
open+="<tr class='alt'>";
open+="<td>"+data[i]+"</td>";
open+="<td>"+data[i]+"</td>";
open+="<td>"+data[i]+"</td>";
open+="</tr>";
}
else {
open+="<tr>";
open+="<td>"+data[i]+"</td>";
open+="<td>"+data[i]+"</td>";
open+="<td>"+data[i]+"</td>";
open+="</tr>";
}
}
$('#statDisplayBody').html(open);
});
});
当数组被发送到jQuery脚本时,它看起来是什么样子 - http://prntscr.com/24wa68
当我尝试使用我所拥有的脚本中的方法显示它们时,看起来是什么样子 - http://prntscr.com/24wadk
我的新jquery -
$(document).on('click', '.chooseStat', function(){
var id = $(this).attr('id');
$.post('chooseStat.php', {id:id}, function(data){
console.log(data);
var open = '<th>Rank</th><th>Username</th><th>Stat</th>';
for(var i = 0; i < data.length; i++) {
if (i % 2 == 0) {
open+="<tr class='alt'>";
open+="<td>"+data[i]["rank"]+"</td>";
open+="<td>"+data[i]["username"]+"</td>";
open+="<td>"+data[i]["score"]+"</td>";
open+="</tr>";
}
else {
open+="<tr>";
open+="<td>"+data[i]["rank"]+"</td>";
open+="<td>"+data[i]["username"]+"</td>";
open+="<td>"+data[i]["score"]+"</td>";
open+="</tr>";
}
}
$('#statDisplayBody').html(open);
}, "json");
});
现在返回一个正确的数组,但我循环的方式显然似乎不起作用,因为现在正在发生 - http://prntscr.com/24wcuz(它只显示数组的最后一行)。
答案 0 :(得分:3)
您需要在JavaScript中正确解析它。这可以通过data = JSON.parse(data);
完成,也可以使用$.post
,如下所示(请参阅jQuery API, Example 7)
$.post('chooseStat.php', {id:id}, function(data){
//code
}, "json");