Artyomska
Artyomska

Reputation: 1335

JQuery GET request won't get correct data from php echo

I am trying to fill a table using a jquery .get request, the url being a php file. The php gets data from a database, then it should return a json array back to the jquery, array which will fill the table. While the length of the array is returned as it should, the table cells are empty.

Here is my get.php function:

<?php 
$mysqli=new mysqli("localhost:3306","root","","leagues");  
if (mysqli_connect_errno())
{
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}   

$return_arr = array();
$query = "SELECT * FROM league";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_row()) 
    {
        $return_arr[] = $row;
    }
}
$mysqli->close();
header('Content-Type: application/json');
echo json_encode($return_arr);
?>

And here is my jquery get function

$.get('php/get.php',function(responseJson) 
    {
        if(responseJson!=null)
        {
            $("#tableleague").find("tr:gt(0)").remove();
            var table1 = $("#tableleague");
            $.each(responseJson, function(key,value) { 
                var rowNew = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>");
                rowNew.children().eq(0).text(value['teams']); 
                rowNew.children().eq(1).text(value['playedgames']); 
                rowNew.children().eq(2).text(value['wongames']); 
                rowNew.children().eq(3).text(value['tiegames']); 
                rowNew.children().eq(4).text(value['lostgames']); 
                rowNew.children().eq(5).text(value['scoredgoal']);
                rowNew.children().eq(6).text(value['receivedgoal']); 
                rowNew.children().eq(7).text(value['points']); 
                rowNew.appendTo(table1); 
            }); 
        }
    }); 

Here is how my webpage looks, with the php file response shown. enter image description here

Since the response is ok, what am I doing wrong that the cells aren't filled? Thank you.

Upvotes: 1

Views: 64

Answers (2)

You can turn the php json into javascript object

 obj = JSON.parse(json);

es:

var json='{"ex1":"test","ex2":[{"sub1":"test"},{"sub2":""s2test}],"ex3":true}';
var obj = JSON.parse(json);

after you can acces to data with :

obj.ex1 // test
obj.ex2[0].sub2 //s2test

Upvotes: 0

MrCode
MrCode

Reputation: 64526

If you look at your JSON data, you can see that there are no keys such as teams or playedgames. This is because you used fetch_row() in the PHP. Change that to fetch_assoc():

while ($row = $result->fetch_assoc()) 

This will give you $row with the field names as keys instead of using numerical keys that fetch_row() provides.

Upvotes: 1

Related Questions