Creo que estoy perdiendo algo:echo'd PHP encode JSON llamado a través de AJAX devuelve exactamente lo que?
uso de AJAX consigo algunos datos de una base de datos y lo envía de nuevo en formato JSON $ 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 hay problema hasta ahora, creo.
En el lado cleint recibo de vuelta lo anterior en
ajaxRequest.responseText
y si hago esto
var categoriesObject = ajaxRequest.responseText;
alert(categoriesObject);
veo lo que espero ver es decir, toda la matriz en la alerta.
Donde todo va mal es tratar de acceder a la respuesta. El error que recibo es que el "categoriesObject" no es un objeto, si no, ¿qué es? lo que me molesta es que ni siquiera puedo acceder de esta manera:
document.write(categoriesObject.Categories[0].category);
¿Qué estoy haciendo mal?
Necesita analizar la cadena en un objeto. Utilizando eval() que es problemático o usando un analizador JSON. Vea aquí: http://www.json.org/js.html Nota al margen, marcos como jQuery tienen esto incorporado en –