gpt4 book ai didi

javascript - 将 Cherrypy 中的数据传递到 Javascript 前端图表

转载 作者:行者123 更新时间:2023-12-02 17:34:51 25 4
gpt4 key购买 nike

我是一名软件工程师,但我从未做过任何 Web 开发。

这次,我负责制作一个仪表板来分析一些性能统计数据。

我首先尝试从头开始学习 Django 来完成这项任务,但最终只浪费了几周的时间。

我开始使用cherrypy构建一些小应用程序,下面是我到目前为止编写的代码。它是一些 Ajax 代码和一些 MySQL 查询代码的大杂烩。

特别是,函数 submit222() 与该项目不太相关。

以下代码中,成功连接并查询数据库。

res 包含多行,其中包含时间戳(x 轴)和请求数(y 轴)。

我想将这些数据传递到res中,以便我可以在网页中显示时间戳和请求数的图表。

使用 Google Chart( https://google-developers.appspot.com/chart/interactive/docs/gallery/annotationchart ) 的图表

我目前没有工作 View 文件,并且找不到合适的示例来引用解决此问题。

任何人都可以为 View 编写一个简单的 Javascript,从这个 python 代码中获取 res 并构建一个图表(或者如果这太多了,任何人都可以解释如何传递 res到 JavaScript)?

我真的试图自己解决这个问题,如果没有任何人的帮助,我认为我无法解决这个问题。

谢谢。

MEDIA_DIR = os.path.join(os.path.abspath("."), u"media")

def connect(thread_index):
# Create a connection and store it in the current thread
cherrypy.thread_data.db = MySQLdb.connect(some db, some id, some password, 'storm')

# Tell CherryPy to call "connect" for each thread, when it starts up
cherrypy.engine.subscribe('start_thread', connect)

class AjaxApp(object):
@cherrypy.expose
def index(self):
# Sample page that displays the number of records in "table"
# Open a cursor, using the DB connection for the current thread
c = cherrypy.thread_data.db.cursor()
query = """select refresh_time,
num_requests
from model group by refresh_time"""
c.execute(query)
res = c.fetchall()
c.close()
return open(os.path.join(MEDIA_DIR, u'index.html'))

@cherrypy.expose
def submit222(self, name):
cherrypy.response.headers['Content-Type'] = 'application/json'
return simplejson.dumps(dict(title="Hello, %s" % name))

config = {'/media':
{'tools.staticdir.on': True,
'tools.staticdir.dir': MEDIA_DIR,
}
}

def open_page():
webbrowser.open("http://127.0.0.1:8080/")
cherrypy.engine.subscribe('start', open_page)
cherrypy.tree.mount(AjaxApp(), '/', config=config)
cherrypy.engine.start()

最佳答案

如果这不是您想要的,请告诉我。开始 Web 编程可能很难概念化客户端和服务器端将发生什么。坚持住!

import cherrypy
import os
import json

MEDIA_DIR = os.path.join(os.path.abspath("."), "media")


class AjaxApp(object):
@cherrypy.expose
def index(self):
# Sample page that displays the number of records in "table"
# Open a cursor, using the DB connection for the current thread
return """
<html>
<head>
<script lang="javascript">
function GetData()
{
// code for IE7+, Firefox, Chrome, Opera, Safari
if(window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var someData_notJSON = JSON.parse(xmlhttp.responseText);
document.getElementById('Data').innerHTML = 'asdf: ' + someData_notJSON.asdf + ' and asdfw: ' + someData_notJSON.asdfw;
}
}

xmlhttp.open("GET","/submit222", true);
xmlhttp.send();
}
</script>
</head>
<body onload="GetData();">
<div id="Data">hi</div>
</body>
</html>
"""

@cherrypy.expose
def submit222(self):
# get data from db
res = { 'asdf': 1,
'asdfw' : 3 }
return json.dumps(res)


config = {'/media':
{'tools.staticdir.on': True,
'tools.staticdir.dir': MEDIA_DIR,
}
}

cherrypy.tree.mount(AjaxApp(), '/', config=config)
cherrypy.engine.start()

希望这有帮助。

关于javascript - 将 Cherrypy 中的数据传递到 Javascript 前端图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com