Simple Ajax Jquery script- How can I get information for each of the rows in the table?
I'm following a simple ajax>php>mysql example posted here
I can only display information from the first row. My table is set up like so
--------------
| id | name|
--------------
| 1 | Pat |
| 2 | Joe |
| 3 | Rob |
--------------
The php code
$result = mysql_query("SELECT * FROM $tableName"); //query
$array = mysql_fetch_row($result); //fetch result
echo json_encode($array);
The script
$(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("id: "+id+" name: "+vname);
}
});
});
ROW 1
If I put the var id = data[0];
I get the value 1. If I put the var name = data[1];
I get Pat.
ROWS 2 n 3 are undefined
Example var id=data[2];
returns undefined etc
My Questions
-
Why do I only get the values from the first row?
-
How can I get information for rows other than the first one?
1Answer
mysql_fetch_row()
returns only 1 row! You have to put it into a loop, for example:
$data = array();
while ( $row = mysql_fetch_row($result) )
{
$data[] = $row;
}
echo json_encode( $data );
You also have to change the 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 />");
}
}
});
- answered 8 years ago
- Community wiki
Your Answer