0

我正在尝试调用数据库并收到一个在 PHP 中限制为 10 个的“顶级列表”。在这里,我需要创建一个数组并使用 $.get() 将其返回给 Jquery。

但是它无法使用此代码接收所有数据,我怎样才能接收到它,然后在 Jquery 中为从 PHP 发回的所有数据执行“for each”?

查询:

$.get("core.inc.php?get_toplist=1",
    function(data) {
        var json = JSON.parse(data); 
        alert(json['name']);
});

PHP:

if ($_GET['get_toplist']) {
    $get_top_list = mysql_query("
            SELECT * FROM ".$DBprefix."Submissions 
            WHERE status='1' 
            ORDER BY points DESC LIMIT 10");

    $i = 0;
    $arr = array();
    while ($top_list = mysql_fetch_array($get_top_list)) {   
        $arr[] = array(
            'position' => $i++,
            'name' => $top_list['name'], 
            'points' => $top_list['points']
        ); 
    }

    echo json_encode($arr);

}
4

3 回答 3

2

您正在返回一个数组,但您的 Javascript 代码将其视为单个元素。尝试:

alert(json[0].name);

如果你想要一个foreach,你可以这样做:

$.each(json, function(i, el) {
    console.log(el.name + " score is " + el.points);
});
于 2013-10-22T13:30:47.787 回答
1

朋友你的 json 会像 .

[{"position":1,"name":"name1","points":"points"},{"position":2,"name":"name2","points":"points"},   {"position":3,"name":"name3","points":"points"},....]

所以你不能像你的方式直接访问它。

做一个循环然后访问它。

$.each(data,function(i,val){
  alert(val.name);
  });

这会奏效。

于 2013-10-22T13:33:45.003 回答
1

你的 php 代码不正确

if ($_GET['get_toplist']) {

          $get_top_list = mysql_query("
          SELECT * FROM ".$DBprefix."Submissions 
          WHERE status='1' 
          ORDER BY points DESC LIMIT 10");

          $i = 0;  
          $arr = array();                                                                                                    
          while ($top_list = mysql_fetch_array($get_top_list)) {   

          $arr[] = array(
                    'position' => $i++,
                    'name' => $top_list['name'], 
                    'points' => $top_list['points']
                    ); 
          }
        }

echo json_encode($arr);

}

只需在 echo json_encode($arr); 之前添加 '}'

你也在 alert(json[0]['name']); 中得到一个数组变化;

于 2013-10-22T13:36:09.833 回答