小编典典

通过AJAX调用的回声PHP编码JSON返回确切的内容?

ajax

我想我在这里遗漏了一些东西:

使用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)."};");

到目前为止,我认为没有问题。

在回教士方面,我将以上内容接收回

ajaxRequest.responseText

如果我这样做

var categoriesObject = ajaxRequest.responseText; 
alert(categoriesObject);

我看到了我希望看到的内容,即警报中的整个阵列。

一切出错的地方就是尝试访问响应。我得到的错误是“ categoriesObject”不是对象-
如果不是,它是什么?我的bugginh是,我什至不能像这样访问它:

document.write(categoriesObject.Categories[0].category);

那我在做什么错呢?


阅读 227

收藏
2020-07-26

共1个答案

小编典典

  1. 您不应该手动创建JSON。用:
    echo json_encode(array('Categories' => $jsondata));
    

要不就

    echo json_encode($jsondata);

我看不出要补充的理由Categories

  1. 您必须使用JSON.parse(在大多数浏览器中可用,但也可以作为脚本使用)在客户端解码JSON :

    var data = JSON.parse(ajaxRequest.responseText);
    
  2. 如果要非常正确,请添加

    header('Content-type: application/json');
    

到您的PHP脚本。

2020-07-26