ajax - JSON parsing an array from PHP filled with SQL data returns [object Object] -
i'm trying make php
file retrieve data sql db
ajax
call, , store data in json
format.
ajax
call
$.ajax({ method:"post", datatype:"json", crossdomain:true, url:"getcourses.php", success: function(response){ var courses=json.parse(response); var el=""; for(var i=0;i<courses.length;i++) { console.log(courses[i].title); } }, error: function(request,error){ console.log("error: request " + request + "\nspecific error: " + error); } });
php
function
//this test, not actual sql query $query="select * courses order id;"; $result=$mysqli->query($query); if($result->num_rows >0) //if there @ least 1 row... { $myarray= array(); //...create array... while($row = $result->fetch_array(mysql_assoc)){ //...fetch it... $myarray[]=$row; //...and add row $myarray ([] means autoincrement). } echo json_encode($myarray);
however, chrome console gives me parserror
. i've been bashing head since yesterday, , can't seem find problem. know json has trouble non-utf8
strings, doing utf8_encode
gives error.
updated
i've removed json.parse method told, , substituted with
var courses=response;
in php file instead, i've added headers
, this
foreach ($myarray $row) { //utf8 encoding avoid parsing problems htmlentities($row['title'],ent_quotes | ent_ignore, "utf-8"); htmlentities($row['description'],ent_quotes | ent_ignore, "utf-8"); }
before json encode. chrome console returns me this
error: request [object object] specific error: parsererror
you should not parse json manually:
var courses=json.parse(response);
as have specified datatype
json, jquery parse already, response
object.
so need:
success: function(courses){ var el=""; for(var i=0;i<courses.length;i++) { console.log(courses[i].title); } },
note need output valid json when specify datatype
that, if if
condition in php script not met, should send error message json well.
Comments
Post a Comment