我想我在这里遗漏了一些东西:
使用AjAX我从数据库中获取一些数据并以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)."};");
到目前为止我没有问题.
在cleint方面,我收到上面的内容
ajaxRequest.responseText
如果我这样做
var categoriesObject = ajaxRequest.responseText;
alert(categoriesObject);
我看到了我期望看到的内容,即警报中的整个数组.
一切都出错的是尝试访问响应.我得到的错误是“categoriesObject”不是一个对象 – 如果不是它是什么?我的错误是我甚至无法像这样访问它:
document.write(categoriesObject.Categories[0].category);
那么我做错了什么?
最佳答案
>您不应手动创建JSON.使用:
原文链接:https://www.f2er.com/ajax/429613.htmlecho json_encode(array('Categories' => $jsondata));
要不就
echo json_encode($jsondata);
我没有看到添加类别的理由.
>您必须使用JSON.parse
(在大多数浏览器中提供,但也可用作script)在客户端解码JSON:
var data = JSON.parse(ajaxRequest.responseText);
>如果您想要非常正确,请添加
header('Content-type: application/json');
到您的PHP脚本.