Создайте массив в php и используйте Jquery get

0

Я пытаюсь сделать звонок в базу данных и получить "toplist", который ограничен 10 на PHP. Здесь мне нужно создать массив и вернуть его в JQuery с помощью $.get().

Но он не смог получить все данные с помощью этого кода. Как я могу заставить это получить, а затем выполнить "для каждого" в JQuery для всех данных, которые отправляются с PHP?

Jquery:

$.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);

}
  • 0
    Теперь я просто получаю "undefined" в alert()
  • 0
    @MichaelBerkowski Он вызывает json_encode() , поэтому возвращает JSON. Заголовок не влияет на возвращаемые данные.
Показать ещё 3 комментария
Теги:
arrays

3 ответа

2

Вы возвращаете массив, но ваш Javascript-код обрабатывает его как один элемент. Пытаться:

alert(json[0].name);

Если вы хотите использовать foreach, вы можете сделать:

$.each(json, function(i, el) {
    console.log(el.name + " score is " + el.points);
});
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']);

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);
  });

это сработает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню