highchart,TypeError:obj为null

时间:2014-05-20 10:52:36

标签: javascript php mysql json highcharts

我想使用PHP从html,

请求日期时间变量

并使用该变量从mysql数据库中选择数据。然后使json生成高图。

它成功生成了json但没有生成高图。

我使用Firebug它说TypeError:obj为null

这是我的代码
PHP

<?php
   header('Content-type: application/json');
   $con = mysql_connect("localhost","root","");
   mysql_select_db("project", $con);
    $month=$_REQUEST['select_month'];

   $sqlChart_Q="SELECT T,value FROM `Temperature`WHERE month(T)='$month'";
   $sqlChart_R=mysql_query($sqlChart_Q);
   while($arrChart_ROW=mysql_fetch_array($sqlChart_R)) {
        $time=strtotime($arrChart_ROW[0])*1000;
          $temp=(float)$arrChart_ROW[1];     
   $arrChart[]=array("time" => $time,"value" => $temp);
    }
    echo json_encode($arrChart);
     ?>

和js

     var chart;
     $(document).ready(function() {           
     var options = {
        chart: {
           renderTo: 'month',
           type: 'spline',
        },
        title: {
        },
        xAxis: {
           type: 'datetime'

        },
        yAxis: {
        },
        series: [{
           name: 'Temperature',
           data: [] 
        }] 
        };
        $.getJSON('PHP/db_month.php', function(json) {
        temp = [];
        $.each(json, function(key,value) {
        temp.push([value.time,value.value]);
              });         
        options.series[0].data = temp;           
        chart = new Highcharts.Chart(options);
        });
        });

json(select_month = 5; $ month = $ _ REQUEST ['select_month'])

[{"time":1400076317000,"value":50},{"time":1400076322000,"value":25},{"time":1400076327000,"value":34},{"time":1400110911000,"value":50},{"time":1400110916000,"value":43},{"time":1400110919000,"value":75},{"time":1400110920000,"value":35},{"time":1400110922000,"value":46},{"time":1400110924000,"value":66},{"time":1400110925000,"value":73},{"time":1400113566000,"value":20},{"time":1400161118000,"value":55},{"time":1400186496000,"value":50},{"time":1400193165000,"value":43},{"time":1400196532000,"value":50}]

顺便说一下,当sql函数改为

    SELECT T,value FROM `Temperature`WHERE month(T)='5'

它将成功生成数据在MAY中创建的高图。

(PS:T的类型是时间戳,我不知道是不是重要。

我的代码出了什么问题? 有人可以帮我解决这个问题。 非常感谢你 !!

2 个答案:

答案 0 :(得分:0)

您需要在json_encode函数中设置JSON_NUMERIC_CHECK,因为您返回字符串而不是数字。

答案 1 :(得分:0)

当您的查询返回空集时,未定义变量$ arrChart。你必须在循环之前定义这个变量。

$arrChart = array();

此外,您的SQL查询也不安全。你必须写这样的东西:

$sqlChart_Q = "SELECT T,value FROM `Temperature`WHERE month(T)=" . (int) $month;