2016-11-18 14 views
-2

PHPを使用してMYSQLデータを使用してGoogleのチャートを作成しています。以下はjQueryの一部です。php JSON to JQuery

$.ajax({ 
     method: 'GET', 
     //dataType: 'JSON', 
     url: "/php/abc.php", 
     success: function (data1) { 
      var data = new google.visualization.DataTable(); 

      // Add legends with data type 
      data.addColumn('string', 'type'); 
      data.addColumn('number', 'value'); 
      //Parse data into Json 
      var jsonData = $.parseJSON(data1); 
      //var jsonData = (data1); 
      for (var i = 0; i < jsonData.length; i++) { 
       alert (jsonData[i].length); 
       alert (jsonData[i].type); 
       data.addRow([jsonData[i].type, parseInt(jsonData[i].value)]); 
      } 

私はブラウザ

{"type":"New_Userstory","value":"10"}{"type":"Active_Userstory","value":"20"}{"type":"Resolved_Userstory","value":"30"}{"type":"Closed_Userstory","value":"40"} 

しかし、JSONを通じて、それは何も表示されていない上、直接PHPページをチェックしたときに、私はPHPからの出力の下に取得しています、間違った文字が「{」と言います。私がヘッダー( 'Content-Type:application/json')を使用したとき。またはdataType: 'JSON'このerorは終了しましたが、結果はこのJSONを取得するための他の方法では「未定義」ですか?

+1

これはあなたのPHPから来る有効なJSONではありません。あなたのPHPコードを表示します。 (注:json_encodeを複数回エコーして動作させることはできません) –

+0

$ this-> temp_sql_display = "SELECT * FROM SalesSummary"; \t \t \t \t \t \t試み{ \t \t \t \t \t \t \t \t $結果=の$ this - > hookup->クエリ(の$ this - > temp_sql_display)。 \t \t \t \tながら($行= $ result-> FETCH_ASSOC()){ \t \t \t \t \tの$ this - > JSON = json_encode($行)。 \t \t \t \t \t echo $ this-> json; \t \t \t \t} \t \t \t \t \t \t} –

+2

ええ、それは仕事に行くのではありません。ループ内で配列を生成し、ループの後にjson_encode配列を生成する必要があります。 –

答えて

3

これは正しいJSON出力ではありません。

{"type":"New_Userstory","value":"10"}{"type":"Active_Userstory","value":"20"}{"type":"Resolved_Userstory","value":"30"}{"type":"Closed_Userstory","value":"40"} 

正しいJSON出力は、あなたのPHPコードによると

[ 
    { 
    "type": "New_Userstory", 
    "value": "10" 
    }, 
    { 
    "type": "Active_Userstory", 
    "value": "20" 
    }, 
    { 
    "type": "Resolved_Userstory", 
    "value": "30" 
    }, 
    { 
    "type": "Closed_Userstory", 
    "value": "40" 
    } 
] 

になり、ここであなたが変更するために必要なものです。

$this->temp_sql_display = "SELECT * FROM SalesSummary"; 
try { 
    $result = $this->hookup->query($this->temp_sql_display); 
    while ($row = $result->fetch_assoc()) 
    { 
     $this->json[] = $row; 
    }  
    echo json_encode($this->json); 
} 
+0

ありがとう@サマイ、どうすればMySQLのデータを取得できますか。上記のコメントにMYSQLフェッチコードを共有しました。 –

+0

whileループを実行するときは、配列を作成する必要があります。この$ this-> json [] = $ rowを実行してみてください。 whileループの内側でecho json_encode($ this-> join)をwhileループの後に移動します。 – Samay

+0

@サマイそれは同じ問題を抱えています。ループ内でjsonエンコードしたくない場合は、配列を生成してからjsonエンコードします。 (編集:あなたの最新のアップデートが表示されます) –