2009-12-17 123 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>