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

时间:2018-07-05 08:41:53

标签: 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..

出于某种原因,“我认为”许多产品都会有很多行,所以我只想使用一行表格文本字段以JSON格式存储和保存一个月的数据。这意味着1行可以存储+/- 30条信息。

我尝试使用ajax和JSON.stringify()将json_encode对象存储在数据库文本字段中。在文本字段中存储的数据是这样的:

[{"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"}]

当我查询此行时,它返回数组而不是字符串。通过使用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"}] ) 

问题:

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

  2. 这样做是正确的方法吗?

任何答案都值得赞赏。

1 个答案:

答案 0 :(得分:0)

查看您的请求是否以string的形式返回(例如称为 response 的变量)

{"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"}]}

您首先需要使用以下命令将字符串解析为JSON

let myobjects = JSON.parse(response);

然后您可以按索引访问元素,例如:

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

alert(myobjects.data[0].visits);
/* will display 510 */

希望有帮助。