Php 从数据库文本字段保存并读取json_encode

Php 从数据库文本字段保存并读取json_encode,php,mysql,json,Php,Mysql,Json,我正在尝试为产品详细信息页面访问报告制作图表,1行代表1天,并为同一天的每次访问增加。此脚本是的一部分,实际上它可以工作: var chartData = []; chartData = <?php echo json_encode($array); ?>; // array from db query var chart = AmCharts.makeChart("chartdiv", { //.... and so on.. 当我查询此行时,它返回数组而不是字符串。使用

我正在尝试为产品详细信息页面访问报告制作图表,1行代表1天,并为同一天的每次访问增加。此脚本是的一部分,实际上它可以工作:

var chartData = []; 

chartData  = <?php echo json_encode($array); ?>; // array from db query

var chart = AmCharts.makeChart("chartdiv", { //.... and so on..
当我查询此行时,它返回数组而不是字符串。使用print_r()返回:

Array ( [data] => [{"date":"2018-06-24","visits":"510"},{"date":"2018-06-25","visits":"511"},{"date":"2018-06-26","visits":"500"},{"date":"2018-06-27","visits":"508"},{"date":"2018-06-28","visits":"509"}] [0] => [{"date":"2018-06-24","visits":"510"},{"date":"2018-06-25","visits":"511"},{"date":"2018-06-26","visits":"500"},{"date":"2018-06-27","visits":"508"},{"date":"2018-06-28","visits":"509"}] ) 
问题:

  • 如何获取存储在数据库中的数据并将其返回到JavaScript对象。为什么它返回数组而不是字符串。我使用json_decode(),但它需要一个字符串。无法使用JSON.parse()解析数据

  • 这样做对吗


  • 任何答复都将不胜感激

    查看您的请求是否以
    string
    的形式返回此信息(在名为response的变量中)

    首先需要使用以下方法将字符串解析为JSON:

    let myobjects = JSON.parse(response);
    
    然后可以通过索引访问元素,例如:

    alert(myobjects.data[0].date);
    /* will display 2018-06-25 */
    
    alert(myobjects.data[0].visits);
    /* will display 510 */
    

    希望能有所帮助。

    问题中包含的JSON数据是服务器根据ajax请求返回的,您想用javascript访问这些JSON数据吗?那是你想要的吗?是的,那是我想要的。因此,我可以使用它作为数据对象来显示图表。如果
    print\u r
    显示
    [{“date”…}]
    ,则这是一个字符串。PHP数组将显示为
    数组([date]=>…)
    。使用
    var\u dump
    确定值的类型。如何实际“查询此行”?抱歉,但当我查询数据时,它返回的是数组而不是字符串。消息:数组到字符串的转换在。。。打印时,数据查询返回:数组([数据]=>[{“日期”:“2018-06-24”,“访问次数”:“510”},{“日期”:“2018-06-25”,“访问次数”:“511”},{“日期”:“2018-06-26”,“访问次数”:“500”},{“日期”:“2018-06-27”,“访问次数”:“508”},{“日期”:“2018-06-28”,“访问次数”:“509”}][0]=>[{“日期”:“2018-06-24”,“访问次数”:“510”},{,“访问次数”:“500”},{“日期”:“2018-06-27”,“访问次数”:“508”},{“日期”:“2018-06-28”,“访问次数”:“509”}])如果
    $data
    是数组,请使用
    json\u encode($data);
    将其转换为字符串。刚才看到您已经更新了您的问题,因此根据
    $row
    是您正在打印的
    print\r()
    您需要
    json\u编码($row->data);
    将其转换为字符串。json\u编码结果:{“data”:“[{“date\”:“2018-06-24\”,“visions\”:“510\”,{“date\”:“2018-06-25\”,“visions\”:“511\”…等等……好的,使用这个
    json编码($row->data,json\u斜线)
    。它将解决斜线问题。
    let myobjects = JSON.parse(response);
    
    alert(myobjects.data[0].date);
    /* will display 2018-06-25 */
    
    alert(myobjects.data[0].visits);
    /* will display 510 */