CanvasJs数据未在图表上显示

CanvasJs数据未在图表上显示

问题描述:

我正在处理CanvasJs以在我的图表中显示数据。我已经放置了一个dropdown并在其中放置了静态的serial numbers。情景是,每当我选择一个序列号时,图表上的数据都会显示出来。为此,我制作了一个当地的php文件,并将其放入我的本地server,发出ajax请求并在图表上显示数据。CanvasJs数据未在图表上显示

但我面临的问题是第一次运行时,当我选择任何序列号时,它并没有在图表上显示我任何东西,但是当我选择任何其他序列号时,显示数据,然后选择另一个序列号(也是我第一次运行时选择的序列号)数据加载完美,我的程序运行良好。

为了更好地了解请查看下面

var dataPoints = []; 
    function SrNo() { 
     var e = document.getElementById("dd"); 
     var selectedVal = e.options[dd.selectedIndex].text; 
     if (selectedVal == "Select Serial Number") 
     { 
      toastr.warning('Please select a serial number', '', { timeOut: 2000 }); 

     } 
     else { 
      $.ajax({ 
       method: "GET", 
       url: "mylocalhost/server/index.php", 
       dataType: "json", 
       data: { Device_Serial_Number: selectedVal }, 
       success: function (server_data) { 

        dataPoints = server_data; 
        dataPoints.forEach(function (data) { 
         dataPoints.push({ x: new Date(data.x), y: data.y }); 
        }); 
       }, 
       error: function() { 
        alert("error"); 
       } 
      }); 
    //here i have generated my chart and passed dataPoints into it 

} 

代码见下面我php代码

$dsn=$_REQUEST['Device_Serial_Number']; 
$sql = "SELECT Device_ID, Energy_kwh, Data_Datetime, Device_Serial_Number FROM ads_device_data WHERE Data_Datetime BETWEEN '2016-12-06' and '2016-12-07' and Device_Serial_Number='$dsn'"; 
$result = mysqli_query($con,$sql); 
$data = []; 


if($result) 
{ 
while($row = mysqli_fetch_array($result)) 
{ 
    $serial = $row['Device_Serial_Number']; 
    $x = $row['Data_Datetime']; 
    $y = $row['Energy_kwh']; 
    $data[] = ['x' => $x , 'y' => (float)$y]; 
} 
    mysqli_free_result($result); 
} 
mysqli_close($con); 
$json = json_encode($data); 

我不知道什么是真正的问题

任何帮助将是非常赞赏

试试打印您的在发送请求或在您的PHP中使用您的$dsn之前,请在您的Javascript中使用。如果它不等于在Javascript中的Select Serial Number,那么您的请求将会运行,但它可能仍包含与数据库中不匹配的内容。