2015-07-29 12 views
0

Я собираю данные из базы данных mysql, используя php и ajax. Я хочу, чтобы данные обновлялись каждые 2 секунды.ajax.reload from mysql server имеет ошибку: свойство undefined

Мой код отображает диаграмму и данные так, как я хочу, но не обновляет данные из базы данных. Фрагмент кода предназначен для делать это:

setInterval(function(){ 
      jsonData.ajax.reload(); 
      }, 2000); 

И я думаю, что ошибка лежит где-то там, когда я проверить элемент с Google Chrome он говорит мне «Uncaught TypeError: Не удается прочитать свойство„перезагрузку“неопределенных ».

Вот полный JS код:

<script type="text/javascript"> 

     // load chart lib 
     google.load('visualization', '1', { 
     packages: ['corechart'] 
     }); 

     // call drawChart once google charts is loaded 
     google.setOnLoadCallback(drawChart); 

function drawChart() { 
    var jsonData = $.ajax({ 
     url: "php/connection3_temp.php", 
     dataType:"json", 
     async: true 
      }).done(function (results) { 

      var data = new google.visualization.DataTable(); 

      data.addColumn('datetime', 'Time'); 
      data.addColumn('number', 'Ambient Temp.'); 
      data.addColumn('number', 'Object Temp.'); 
      data.addColumn('number', 'Humidity'); 

      $.each(results, function (i, row) { 
      data.addRow([ 
       (new Date(row.timestamp)), 
       parseFloat(row.amb_temp), 
       parseFloat(row.obj_temp), 
       parseFloat(row.hum) 
      ]); 
      }); 

     var options = { 
      title: 'Temperature and Humidity against Time', 
      legend: { position: 'bottom' }, 
      series: { 
       0: {targetAxisIndex: 0}, 
       1: {targetAxisIndex: 0}, 
       2: {targetAxisIndex: 1} 
      }, 
      vAxes: {0: {title: 'Temp. (°C)', 
         minValue: 0, 
         maxValue: 30 
         }, 
        1: {title: 'Humidity (%)', 
         minValue: 20, 
         maxValue: 80 
         } 
       }, 
      hAxis: { 
        title: 'Time (s)' 
       }, 
     }; 

      var chart = new google.visualization.LineChart($('#temp_chart').get(0)); 
      chart.draw(data, options); 

     }); 

     setInterval(function(){ 
     jsonData.ajax.reload(); 
     }, 2000); 

     } 

</script> 

, а также на PHP:

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = "raspberryblue"; 
$dbname = "test"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM sensortag3 ORDER BY id DESC LIMIT 3000"; 
$result = $conn->query($sql); 

// All good? 
if (!$result) { 
    // Nope 
    $message = 'Invalid query: ' . mysqli_error() . "<br>"; 
    $message .= 'Whole query: ' . $sql; 
    die($message); 
} 

// Print out rows 
$prefix = ''; 
echo "[\n"; 
while ($row = mysqli_fetch_assoc($result)) { 
    echo $prefix . " {\n"; 
    echo ' "timestamp": "' . $row['timestamp'] . '",' . "\n"; 
    echo ' "amb_temp": "' . $row['amb_temp'] . '",' . "\n"; 
    echo ' "obj_temp": "' . $row['obj_temp'] . '",' . "\n"; 
    echo ' "hum": "' . $row['hum'] . '"' . "\n"; 
    echo " }"; 
    $prefix = ",\n"; 
} 
echo "\n]"; 

$conn->close(); 
?> 
+0

Похоже, что объект xhr, возвращаемый вами, $ .ajax call не имеет свойства ajax. – bassxzero

+0

Итак, мне нужно добавить свойство ajax в вызов $ .ajax? –

ответ

0

Там нет свойства с именем перезарядки() в скрипте. Вот почему на консоли отображается неопределенная перезагрузка свойств(). Поэтому добавьте метод reload внутри ajax() для обновления данных.