【问题标题】:The labels are displayed but data is not displayed显示标签但不显示数据
【发布时间】:2017-02-20 12:35:53
【问题描述】:

我正在开发代码以从远程 Ajax 获取数据,但无法显示所需的数据。

但是标签的名称显示正确。

从远程,在 PHP 中我有这个:

for ( $i = $start; $i <= $end; $i = $i + 86400 ) {
    $SQDate     = date( 'Y-m-d', $i ); 
    $PMS_ci     = $this->getPMS_ci_status($SQDate);
    $PMS_co     = $this->getPMS_co_status($SQDate);
    if($PMS_ci["sum"] == "")
        $PMS_ci["sum"] = "0";
    if($PMS_co["sum"] == "")
        $PMS_co["sum"] = "0";
    $arrival[]  = $PMS_ci["sum"];
    $departure[]= $PMS_co["sum"];
}
$data[]     = array("name" => "Arrival", "data" => join($arrival,","));
$data[]     = array("name" => "Departure", "data" => join($departure,","));

return JSON_encode($data);

端 Javascript:

retour = JSON.parse(data.message);
Highcharts.chart('container', {
    chart: {
        type: 'spline'
        },
    .../...
    ,
    series: [{name: retour[0].name ,data: retour[0].data},
             {name: retour[1].name, data: retour[1].data}],
    navigation: {
    .../...

数据内容返回:

[
    {
        "name":"Arrival",
        "data":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0]"
    },
    {
        "name":"Departure",
        "data":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0]"
    }
]

在所有情况下,都不会显示所需的数据,但会正确显示名称。

我不知道为什么。我在这里阅读了一些主题但没有成功。应该怎么做才能确保数据与标签一起显示?

【问题讨论】:

  • 你能提供你的 html 吗? data.message 是什么?

标签: javascript php highcharts


【解决方案1】:

来自

$data[]     = array("name" => "Arrival", "data" => join($arrival,","));
                                                   ^
                                            No need of join, json_encode
                                            takes care of it

收件人

$data[]     = array("name" => "Arrival", "data" => $arrival);

你的 json 变成了

来自

[{"name":"Arrival","data":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0]"},{"name":"Departure","data":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0]"}]
                          ^
                         Should be array not string

收件人

[{"name":"Arrival","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0]},{"name":"Departure","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0]}]

你可以像下面这样重写你的代码

for ( $i = $start; $i <= $end; $i = $i + 86400 ) 
    {
          $SQDate     = date( 'Y-m-d', $i ); 
          $PMS_ci     = $this->getPMS_ci_status($SQDate);
          $PMS_co     = $this->getPMS_co_status($SQDate);

          $arrival[]  =  $PMS_ci["sum"]+0;
          $departure[]= $PMS_co["sum"]+0;
    }

        $data[]     = array("name" => "Arrival", "data" =>$arrival);
        $data[]     = array("name" => "Departure", "data" => $departure);

        // Return to caller (since PHP 5.3.3)
        // and from caller do echo  
        return json_encode($data,JSON_NUMERIC_CHECK);

【讨论】:

  • 更改给出:"[{"name":"Arrival","data":["0","0","0","0","0","0 ","0","0","0","0","0","0","0","0","0","2","3","0", "0","0","0","0","0","0","0","0","0","0"]},{"name":"出发" ,"数据":["0","0","0","0","0","0","0","0","0","0","0", "0","0","0","0","0","2","3","0","0","0","0","0","0 ","0","0","0","0"]}]"
  • 但现在可以了。没有可显示的内容。
  • @Danard:我刚刚编辑过,试试return json_encode($data,JSON_NUMERIC_CHECK);
  • 找到:$arrival[] = intval($PMS_ci["sum"]); $departure[]= intval($PMS_co["sum"]);
  • 非常感谢先生 :)
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2020-05-05
相关资源
最近更新 更多