2011-12-13 26 views
0

這是我今天掙扎着:如何將json從php傳遞給jqPlot的javascript?

我想繪製一個使用jqPlot庫的圖。 sql查詢輸出的數據通過使用json_encode在php中轉換爲json並保存在隱藏表單字段中。這工作得很好,實際字段包含:

[["2011-12-10 12:01:00",271],["2011-12-10 12:13:05",132],["2011-12-11 12:17:55",388],["2011-12-10 22:03:40",5],["2011-12-11 12:10:54",830]] 

然後從表單中的數據會以JavaScript通過檢索:

var data = document.getElementById("dataarray").value; 

爲了用它作爲jqPlot數據以後。 該data變量的格式是否正確,並且當與JSON格式document.write(data);,輸出正確的數據,但每當檢查我將其放置在plot1變量內部使用的數據,它拋出在Safari Firefox中的錯誤[object Object]Uncaught #<Object>的曲線圖。

整個javascript代碼如下:

$(document).ready(function(){ 

    var data = document.getElementById("dataarray").value; 


    var test = [["2011-12-10 12:01:00",271],["2011-12-10 12:13:05",132],["2011-12-11 12:17:55",388],["2011-12-10 22:03:40",5],["2011-12-11 12:10:54",830]]; 
    var plot1 = $.jqplot("chart_personal_2", [data], { 
      title:"Data Point Highlighting", 
      axes:{ 
     xaxis:{ 
      renderer:$.jqplot.DateAxisRenderer, 
      numberTicks: 3, 
      tickOptions:{ 
      formatString:"%d/%m/%Y %H:%M:%S" 
      } 
     }, 
     yaxis:{ 
     label: "Elevation(m)", 
      tickOptions:{ 
      showMark: true 
      } 
     } 
      }, 
      highlighter: { 
     show: true, 
     sizeAdjust: 7.5 
      }, 
      cursor: { 
     show: false 
      } 
     }); 
}); 

我甚至嘗試output = String(data);,但它也不能工作。 我假設我的data變量是一個不能用作jqPlot圖形的源數據的對象,它需要在使用前轉換爲字符串?如我錯了請糾正我。

希望有人知道如何解決沒有,在此先感謝!

回答

4

您檢索它作爲String,但jqPlot期待Array,所以你要在其上運行eval

var data = document.getElementById("dataarray").value; 
eval('data = '+data+';'); 

或更好的解決方案:不要將它保存到隱藏的輸入,但要JS變量從php:

echo "<script type='text/javascript'> var data = ".json_encode($data).";</script>"; 
+0

謝謝你,將它轉換爲數組解決了問題。我確信jqPlot也能夠處理字符串,如果它是JSON格式的,但我可以看到我錯了。 – 2011-12-13 18:32:53