Простой сценарий Ajax Jquery. Как получить информацию для каждой из строк таблицы?

Я выполняю простой пример ajax> php> mysql, размещенный здесь http://openenergymonitor.org/emon/node/107

Я могу отображать только информацию из первой строки. Моя таблица настроена так

-------------- | id | name| -------------- | 1 | Pat | | 2 | Joe | | 3 | Rob | -------------- 

Код php

  $result = mysql_query("SELECT * FROM $tableName"); //query $array = mysql_fetch_row($result); //fetch result echo json_encode($array); 

Сценарий

 $(function () { $.ajax({ url: 'api.php', data: "", dataType: 'json', success: function(data) { var id = data[0]; //get id var vname = data[1]; //get name $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname); } }); }); 

ROW 1

Если я поместил var id = data[0]; Я получаю значение 1. Если я поместил var name = data[1]; Я получаю Пэт.

ROWS 2 n 3 не определены

Пример var id=data[2]; возвращает undefined и т. д.

Мои вопросы

  1. Почему я получаю только значения из первой строки?

  2. Как я могу получить информацию для строк, отличных от первой?

Из других вопросов в Stackoverflow я вижу, что мне, вероятно, придется использовать цикл while, но я не совсем уверен, почему и как.

Solutions Collecting From Web of "Простой сценарий Ajax Jquery. Как получить информацию для каждой из строк таблицы?"

Старое расширение mysql устарело, лучше использовать mysqli или PDO !

mysql_fetch_row() возвращает только 1 строку! Вы должны положить его в цикл, например:

 $data = array(); while ( $row = mysql_fetch_row($result) ) { $data[] = $row; } echo json_encode( $data ); 

Вы также должны изменить JavaScript:

 $.ajax({ url: 'api.php', data: "", dataType: 'json', success: function(rows) { for (var i in rows) { var row = rows[i]; var id = row[0]; var vname = row[1]; $('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname) .append("<hr />"); } } }); 

Кстати, я бы рекомендовал вам использовать mysql_fetch_assoc() потому что это делает ваш код более гибким и чистым.

$ result = mysql_query ("SELECT * FROM $ tableName"); $ array = array (mysql_fetch_row ($ result));

while ($ row = mysql_fetch_row ($ result)) {$ array [] = $ row; } echo json_encode ($ array);