echo'd PHP encode JSON called via AJAX returns what exactly?
I think I'm missing something here:
Using AjAX I get some data from a database and send it back in JSON format $jsondata = array();
while ($Row = mysql_fetch_array($params))
{
$jsondata[]= array('cat_id'=>$Row["cat_id"],
'category'=>$Row["category"],
'category_desc'=>$Row["category_desc"],
'cat_bgd_col'=>$Row["cat_bgd_col"]);
};
echo("{\"Categories\": ".json_encode($jsondata)."};");
No problem so far I think.
On the cleint side I receive back the above into
ajaxRequest.responseText
and if I do this
var categoriesObject = ajaxRequest.responseText;
alert(categoriesObject);
I see what I expect to see ie the entire array in the alert.
Where it all goes wrong is trying to access the response. The error I get is that the "categoriesObject" is not an object - if not what is it? what's bugginh me is that I can't even access it like this:
document.开发者_JAVA百科write(categoriesObject.Categories[0].category);
so what am I doing wrong?
You should not create JSON manually. Use:
echo json_encode(array('Categories' => $jsondata));
or just
echo json_encode($jsondata);
I don't see a reason to add
Categories
.You have to decode the JSON on the client side, using
JSON.parse
(available in most browsers, but also available as script):var data = JSON.parse(ajaxRequest.responseText);
If you want to be very correct, add
header('Content-type: application/json');
to your PHP script.
Are you acutally parsing the JSON? It won't work without.
var categoriesObject = JSON.parse(ajaxRequest.responseText);
精彩评论