Как нарисовать Google Chart с помощью jQuery ajax ()? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть этот код для генерации диаграммы:

<script type="text/javascript">

     google.load('visualization', '1.0', {'packages':['corechart']});
    $(document).ready(function() {

    $('.show_chart').click(function(){
        var sku = $(this).attr("data-sku");
        var vid = $(this).attr("data-vid");

        $.ajax({
             type: "POST",
             url:"../ajax/priceChart.php", 
             async: false,
             dataType:'text',//moment google apito mai ne go zaredi !
             data: {'sku':sku,'vid':vid},
             success:function(vals){
                 var vals = vals;
                 $(".dialog").dialog({
                    modal:true,
                    buttons: { "Cancel": function() { $(this).dialog("close"); } }
                });


drawChart(vals);
                return false;



            },
                error:function (xhr, ajaxOptions, thrownError){
                    alert(xhr.status);
                    alert(thrownError);
                }  
        });       
    }); 



    })
function drawChart(vals) {
        console.log(1);
        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Date');
        data.addColumn('number', 'New');
        data.addColumn('number', 'Old');
        data.addRows([
         // ['2012-03-29 16:36:58', 313.99000, 314.00000],
         // ['2012-03-29 16:36:58', 313.99000, 314.00000]
            vals

        ]);


        // Set chart options
        var options = {'title':'PriceChart'};

        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
        console.log(4);
      }  

</script>

Результат возврата PHP:

foreach ($arr as $v){
    $ts = $v['timestamp'];
    $p = $v['price'];
    $po = $v['price_old'];
    $resp[] = "[" 
                                    . "'$ts'" . ", "
                                    . "$p" . ", "
                                    . "$po"
                                    . "]";
}

echo implode(',',$resp);

Если я использую результат возврата из php-файла, Google Chart не делаетРабота.Если я использую значения по умолчанию, Google Chart работает.В чем проблема ?Заранее спасибо, и я прошу прощения за мой английский!

1 Ответ

1 голос
/ 02 апреля 2012

В функции Drawchart вы определили New и Old как число. Вы получаете двойной от PHP.

foreach ($arr as $v){
$ts = $v['timestamp'];
$p = (int) $v['price'];
$po = (int) $v['price_old'];
$resp[] = "[" 
                                . "'$ts'" . ", "
                                . "$p" . ", "
                                . "$po"
                                . "]";
}

echo implode(',',$resp);

Пожалуйста, попробуйте этот код.

Надеюсь, эта помощь.

~ K

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...