2009-07-06 79 views
1

繪製圖形,我需要和幾個步驟緊急幫助讓我們走到這一步的 一步 我想繪製圖形使用海軍報和MySQL,但發生異常問題與海軍報

訪問getdata.php

 $sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user 
          FROM Messages 
          GROUP BY From_user"); 

      echo "["; 
    while($result = mysql_fetch_array($sql)) 
    { 
    //print_r($result); 
    echo "[".$result['msgCount'].",".$result['From_user']."]"."\n"; 

    } 

    echo "]"; 

而且密謀

<div id="plotarea" style="width:600px;height:300px;"> 

        <script type="text/javascript"> 

      var options = { 
        lines: { show: true }, 
        points: { show: true }, 
        xaxis: { min:0,max:5 }, 
        yaxis: { min:1 ,max:60}, 
       }; 

    $.ajax({ 
          url:"getData.php", 
          type:"post", 
          success:function(data) 
          { 
            alert(data); 
            $.plot($("#plotarea"),data,options); 
            //alert(data); 
          } 
        }) 
        </script> 

    </div> 

誰能告訴我什麼是錯,此代碼 接下來我想有一個座標軸的曲線圖是時間

+0

什麼異常消息 – 2009-07-07 11:49:51

+0

未捕獲的異常:一個無效的或非法的串是指定的(NS_ERROR_DOM_SYNTAX_ERR) [Break on this error] ctx.arc(axisx.p2c(x)... y)+ offset,radius,0,Math.PI,false); – Sarah 2009-07-07 12:31:41

回答

1

首先,它看起來像您使用PHP代碼創建的JavaScript列表不是用逗號分隔符分隔每個數據點列表項。

按照jQuery $.ajax documentation傳遞給success函數的第一個參數是從所述服務器返回的數據,根據「的dataType」參數格式化。您尚未提供dataType參數。文檔說,它將智能地將responseXML或responseText傳遞給您的成功回調,基於響應的MIME類型如果沒有指定dataType

我猜數據傳遞給plot函數是一個普通的舊字符串,而不是Flot所期望的JavaScript列表對象。將dataType: 'json'選項添加到$.ajax呼叫應該解決這個問題。

6
$sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user 
          FROM Messages 
          GROUP BY From_user"); 

    while($result = mysql_fetch_array($sql)) 
    { 
    $user_data[] = array($result['msgCount'],$result['From_user']); 
    } 

    echo json_encode($user_data); 

以上將消除與逗號分隔(其中,從我可以告訴,你永遠不解決)問題。

接下來,JavaScript的:

<script type="text/javascript"> 
    $(function() { 
      var options = { 
        lines: { show: true }, 
        points: { show: true }, 
        xaxis: { min:0,max:5 }, 
        yaxis: { min:1 ,max:60}, 
       }; 

    $.get("getData.php", function(data){ 
          $.plot($("#plotarea"),data,options); 
         }, 
       json); 
    }); 
    </script> 

請注意,我改變了$.ajax$.get,因爲你沒有從頁面傳遞任何數據給腳本,後是沒有必要的。如果您使用$.get,則假定所有設置名稱。

另請注意,我將腳本從html中拉出,並將其放入jquery window.onload語法:$(function() {。這將在你的HTML的頭部。

從我所知道的,你並不是真的需要ajax,因爲你沒有定義任何觸發$ .ajax函數的事件。它看起來像你正在使用AJAX調用腳本時,你可以只把腳本到所加載的網頁,就像同一個腳本:

<?php 
$sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user 
          FROM Messages 
          GROUP BY From_user"); 

    while($result = mysql_fetch_array($sql)) 
    { 
    $user_data[] = array($result['msgCount'],$result['From_user']); 
    } 
    ?> 

    <script type="text/javascript"> 
    $(function() { 
      var options = { 
        lines: { show: true }, 
        points: { show: true }, 
        xaxis: { min:0,max:5 }, 
        yaxis: { min:1 ,max:60}, 
       }; 

    var userposts = <?php echo json_encode($user_data); ?>; 

    $.plot($("#plotarea"),userposts,options); 

    </script>  
    <style type="text/css"> 
    #plotarea { 
     width: 600px, height: 300px; 
    } 
    </style> 
    </head> 
    <body> 
    .....//Put whatever before the div 
    <div id="plotarea"></div> 
    .....//Finish up the page. 
0

什麼你想輸出在PHP中的JSON文件這將直接解析爲一個Java腳本數組(手動或自動通過庫,如jQuery)

因此,不需要在php中打印json,而是可以輕鬆地將數據饋送到php數組並使用json_encode函數輕鬆地將其轉換爲json字符串。

一個小例子可以幫助 你試圖輸出

回聲 「[」。$結果[ 'MSGCOUNT']。 「」 $結果[ 'FROM_USER'。 「]」。 「\ n」 個;

其中在java腳本[] =數組,你正在創建[[]] =陣列內數組。 但是,當數組很大時,在php中回顯會很麻煩。 我們做什麼。 一個數組結構在php中是類似的。 您需要將數據添加到php中作爲「陣列內數組」 例如:php array(array(1,2,3))= [[1,2,3]]。 如何將其映射到json?

容易==>回波json_encode(陣列(陣列(1,2,3));

乾杯