2011-12-13 10 views
0

ここに私は今日苦労している:jpPlotのjsonをphpからjavascriptに渡すには?

私はjqPlotライブラリを使用してグラフを描こうとしています。 sqlクエリは、json_encodeを使用してPHPでjsonに変換され、隠しフォームフィールドに保存されたデータを出力します。これは正常に動作し、実際のフィールドが含まれています

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

を後でjqPlotのためのデータとして使用するために:その後、フォームからのデータを使用してJavaScriptで取得され

[["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]] 

を。 data変数は正しくフォーマットされており、document.write(data);でチェックすると正しいデータがjson形式で出力されますが、グラフのデータを使用する変数plot1に配置すると、Safariにエラー[object Object]、Firefoxに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としてそれを取得しているが、あなたはそれでevalを実行する必要がありますのでjqPlotは、Arrayを期待:

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

またはよりよい解決策:非表示の入力にそれを保存しませんが、からJS変数を作りますphp:

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

ありがとうございます。ありがとうございました、配列に変換して問題を修正しました。 JSON形式であればjqPlotも文字列を処理できますが、間違っていることがわかりました。 –

関連する問題