2013-03-11 2 views
0

Я использую этот пример Achieving Google Visualization chart reloads using ajax для динамического извлечения данных из базы данных Mysql, и я получаю сообщение об ошибке «Невыпущен SyntaxError: Неожиданный токен <». Это мой HTML-файлAPI визуализации Google php ajax

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     google.load("jquery", "1.6.1"); 
     google.load('visualization', '1', {packages: ['table']}); 
    </script> 
    <script type="text/javascript"> 

    function drawVisualization(dataFromAjax) { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('number', 'InvoiceNo'); 
     data.addColumn('string', 'B/L No'); 
     data.addColumn('date', 'Date'); 
     data.addColumn('string', 'Customer Name'); 
     data.addColumn('number', 'Amount'); 
     data.addRows(dataFromAjax); 
     var table = new google.visualization.Table(document.getElementById('table')); 

     table.draw(data); 
    } 

    function makeAjaxCall() { 
     $.ajax({url:'test.php', 
       data: {}, 
       success: function(responseData) { 

         var arrayForGviz = eval("(" + responseData + ")"); 
         drawVisualization(responseData); 
         } 
     }); 
    } 
    </script> 
    </head> 
    <body> 
    <input type="button" onclick="makeAjaxCall();return false;" value="Click to get data"></input> 
    <div id="table"></div> 
    </body> 
</html> 

и Это мой PHP-файл test.php

 


    $con = mysql_connect("localhost","userName","password"); 

    if (!$con) 

    { 

    die('Could not connect: ' . mysql_error()); 

    } 

    mysql_select_db("DB_NAME", $con); 

    $result = mysql_query("call cargosys.rpt_salesByDate('2013/03/05','2013/03/10')"); 
    $output = array(); 
    while($row = mysql_fetch_array($result)) { 
     // create a temp array to hold the data 
     $temp = array(); 

     // add the data 
     $temp[] = $row['inv_no']; 
     $temp[] = ''' . $row['bl_no'] . '''; 
     $temp[] = ''' . $row['inv_date'] . '''; 
     $temp[] = ''' . $row['cust_name'] . '''; 
     $temp[] = $row['Amount']; 

     // implode the temp array into a comma-separated list and add to the output array 
     $output[] = '[' . implode(', ', $temp) . ']'; 
    } 

    // implode the output into a comma-newline separated list and echo 
    echo implode(",\n", $output); 
    //echo json_encode($output); 
    mysql_close($con); 

+0

Где ошибка? это в PHP или Javascript? И я предполагаю, что это происходит при функции eval() javascript. Я прав? –

+0

Да, это происходит там – imsome1

+0

Ошибка синтаксиса Php существует там temp [] = '' '. $ row ['bl_no']. '' '; –

ответ

1

Внутри функции успеха сделать:

console.log(responseData); 

Затем скопируйте и вставьте responseData в JSON валидатор на jsonlint.com

Я предполагаю, что это синтаксическая ошибка JSON, которая имеет значение val идентификатор укажет вам.

+0

Я проверил ее, и это действительный json, и теперь она дает эту ошибку «Неиспользуемая ошибка: аргумент, заданный addRows, должен быть либо числом, либо массивом» – imsome1

+0

его работая теперь я изменил var arrayForGviz = eval ("[" + responseData + "]"); спасибо за вашу идею – imsome1

Смежные вопросы