0

jQuery を使用して PHP ページを呼び出すことにより、(Google Charts API を使用して) グラフの作成を自動化しようとしています。私はデータの JSON を返しています。現在、オプションの文字列を返しています。

チャートの「データ」は正常に機能しますが、「オプション」を自動的に渡すのが困難です。私のコードのスニペットは以下のとおりです。

    var jsonData = $.ajax({
        url: "http://server.com/charts/dev/data.php",
        dataType:"json",
        async: false
    }).responseText;

    var optionData = $.ajax({
        url: "http://server.com/charts/dev/options.php",
        dataType:"text",
        async: false
    }).responseText;

    var data = new google.visualization.DataTable(jsonData);
    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, optionData);

「optionData」を取得しようとする jQuery を削除し、それを自分で指定すると、グラフが読み込まれます。そうしないと、'Cannot read property '0' of null' というエラーが表示されます (コンソールには何も表示されません)。

PHP ページ 'options.php' は次のようになります (今のところ):

<?php
echo <<< 'EOT'
{width: 400, height: 240}
EOT;

Console.Log(optionData) を追加すると{width: 400, height: 240}、期待どおりになります。

4

3 に答える 3

0

ajax呼び出しのトラブルシューティングを行うには、エラー、成功、および完全なコールバックを定義します。

var optionData = $.ajax({
    url: "http://server.com/charts/dev/options.php",
    dataType:"json", // I think using 'text' here is wrong as `draw` expects objects
    async: false,
    error: function(xhr, status, err){
        console.log('Error: ' + xhr); // you can also output status and err if needed
    },
    success: function(data){
        console.log('Success: ' + data);
    },
    complete: function(data){
        console.log('Complete: ' + data);
    }
}).responseText;

もう1つ、PHPがオブジェクトを返すようにするためにjsonはそれをPHPでエンコードします。

echo json_encode($your_data);
于 2013-03-07T07:34:04.933 に答える
0

オプションデータのデータ型を置き換えるためにテストできますか。

から:

    var optionData = $.ajax({
        url: "http://server.com/charts/dev/options.php",
        dataType:"text",
        async: false
    }).responseText;

に:

    var optionData = $.ajax({
        url: "http://server.com/charts/dev/options.php",
        dataType:"JSON",
        async: false
    }).responseText;
于 2013-03-07T06:58:05.050 に答える
0

何を試しても、jQuery は常にオブジェクトではなく文字列を返すように見えました。

これは「google.visualization.DataTable」では問題ありませんでしたが、「google.visualization.AreaChart」にはオブジェクトが必要でした。私は今、完璧に動作するこのようなものを使用しています:

var optionData = jQuery.parseJSON($.ajax({
    url: "http://server.com/charts/release/getChartOptions.php",
    dataType:"json"
    async: false
}).responseText);

ご協力ありがとうございました!

于 2013-03-09T12:12:55.207 に答える