2013-07-25 54 views
10

Tôi nghĩ đó là vì toàn cầu của tôi var chart chưa được đặt khi chức năng của tôi requestData được gọi.Highcharts.js sẽ không hiển thị biểu đồ, nó nói lỗi "Không thể đọc chuỗi thuộc tính 'không xác định"

Đây là mã của tôi về highcharts bên trong một $(document).ready(function()

 chart = new Highcharts.Chart({ 
      chart: { 
       renderTo: 'container', 
       defaultSeriesType: 'spline', 
       marginRight: 130, 
       marginBottom: 25, 
       events: { 
       load: requestData() 
       } 
      }, 
      title: { 
       text: 'Reporte PMU', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: '', 
       x: -20 
      }, 
      xAxis: { 
       type: 'datetime', 
       tickPixelInterval: 150, 
       maxZoom : 20 * 1000, 
       title: { 
        text: 'tiempo' 
       }, 
       labels : { y : 0, rotation: -60 } 
      }, 
      yAxis: { 
       title: { 
        text: 'Amount' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       formatter: function() { 
        return '<b>'+ this.series.name +'</b><br/>'+ 
        this.x +': '+ this.y; 
       } 
      }, 
      legend: { 
       layout: 'vertical', 
       align: 'right', 
       verticalAlign: 'top', 
       x: -10, 
       y: 100, 
       borderWidth: 0 
      }, 
      series: [{ 
       name: 'serieTension', 
       data: [] 
      }] 
     });  
    }); 

và đây là tôi requestData()

 $.ajax({       
      url: 'data2.php', 
      success: function(point) { 
       var series =chart.series[0], 
       shift = series.data.length > 20; //shift if the series is longer than 20 

       //add point 
       chart.series[0].addPoint(point, true, shift); 

       setTimeout(requestData, 1000); 
      }, 
      cache : false 
     }); 
    } 

Trả lời

7

Chỉ cần đặt

var chart; 

bên ngoài tất cả các chức năng, bên cạnh tài liệu của bạn đã sẵn sàng xử lý để làm cho nó toàn cầu.

EDIT:

Ngoài ra, thêm một tài liệu tham khảo trong các cuộc gọi tải

load: function() { 
    chart = this; // `this` is the reference to the chart 
    requestData(); 
} 
+0

Tôi đã có một biểu đồ var như là một biến toàn cầu bên ngoài tất cả các funcions – rrey

+0

xuất sắc, cảm ơn. đó là vấn đề tôi không tham khảo biểu đồ – rrey

+0

Không có nơi nào khác tôi tìm thấy thông tin chi tiết này để thêm tham chiếu trong cuộc gọi tải. Điều đó cuối cùng làm cho biểu đồ của tôi hoạt động với dữ liệu trực tiếp. – 0rkan