小编典典

简单的Ajax Jquery脚本-如何获取表中每一行的信息?

ajax

我正在遵循一个简单的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); 
      } 
    });
  });

第1行

如果我放,var id = data[0];我得到值1。如果我放,var name = data[1];我得到Pat。

ROWS 2 n 3未定义

示例var id=data[2];返回undefined等

我的问题

  1. 为什么只从第一行获取值?

  2. 我如何获取除第一个行以外的其他行的信息?

从关于Stackoverflow的其他问题中,我可能会不得不使用while循环,但是我不确定为什么或如何使用。


阅读 269

收藏
2020-07-26

共1个答案

小编典典

旧的MySQL扩展mysql已过时,请更好地使用mysqliPDO

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()它,因为它使您的代码更灵活,更干净。

2020-07-26