2009-12-17 118 views
2

我已經下載了Flot library,並一直玩。jquery Flot從經典的ASP數據庫

我瞭解Flot庫的工作原理以及如何繪製簡單圖形。我正在努力掙扎的是從數據庫中提取數據並將其傳遞到Flot Graph中,以便圖形根據檢索到的數據變爲動態。

我相信你可以使用JSON函數將數據從數據庫傳遞到Flot圖表,但我不知道從哪裏開始,有誰能幫助我嗎?任何示例代碼或建議將不勝感激

我使用傳統的ASP從數據庫中提取數據。

回答

2

有幾件事你必須看看。第一個JSON。你需要知道你的JSON字符串的結構。舉例來說,你可以這樣創建一個JSON字符串:

{"name":"Tom", "sales":200} 

,或者如果它有很多名字和銷售,然後使用數組是這樣的:

{"names":["Tom", "Harry"], "sales":[200, 100]} 

然後在JavScript訪問這些值...假設你有JSON對象是這樣的:

var myJSON = {"names":["Tom", "Harry"], "sales":[200, 100]}; 
document.write(myJSON.names[0]); //print out Tom 
document.write(myJSON.sales[0]); //200 

既然你想使用AJAX來得到這個JSON對象,那麼你可以創建一個ASP頁,簡單地以正確的格式返回一個JSON字符串。例如:

Set rs = Conn.Execute("SELECT name, sales FROM employees") 
If Not rs.EOF Then 
    Response.Write "{'names':[" 
    Do Until rs.EOF 
    Response.Write rs("name") 
    Response.Write "," 
    rs.MoveNext 
    Loop 
    rs.Close : Set rs = Nothing : Conn.Close : Set Conn = Nothing 
    Response.Write "]}" 
%> 

聲明:這不是測試代碼,我近10年來沒有寫過經典的ASP!例如,確保最後一個,不會打印等。

現在,this link有一些使用AJAX加載數據並更新圖形的示例。因此,您必須修改URL以指向生成JSON字符串的asp頁面,並修改onDataRecieved函數以根據您自己的結構添加數據。

我希望這會有所幫助。

4

我不確定動態是否意味着「實時更新」(AJAX)。如果情況並非如此,那麼以下示例應該可以幫助您開始使用flot和經典ASP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title>Example</title> 
    <!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]--> 
    <script language="javascript" type="text/javascript" src="jquery.js"></script> 
    <script language="javascript" type="text/javascript" src="jquery.flot.js"></script> 
</head> 

<body> 

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

    <script id="source" language="javascript" type="text/javascript"> 
    $(function() { 
     var d1 = []; 

     <% 
      SET ac = Server.CreateObject("ADODB.Connection") 

      ac.Open "driver={sql server}; server=localhost; database=db_name; uid=user; pwd=secret" 

      SET rs = Server.CreateObject("ADODB.Recordset") 
      SET rs = ac.Execute("SELECT data_x, data_y FROM data_log") 

      FOR EACH field IN rs.Fields  
       Response.Write "d1.push([" & field.data_x & ", " & field.data_y & "]);"  
      NEXT 
     %> 

     $.plot($("#placeholder"), [d1]); 
    }); 
    </script> 

</body> 
</html>