【发布时间】:2013-09-29 11:09:43
【问题描述】:
我正在为一个 python 程序和一个 ajax 请求而苦苦挣扎。我试图从我的 Javascript 中获取一些数据到 python 程序中,我一直使用的正常方法 .getfirst(field name) 不起作用,我认为是因为请求是通过 ajax (对不起,我是这一切都很新)所以我尝试使用以下代码
Python:
import MySQLdb
import cgi, cgitb
def index(req):
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
dtbox = form.getvalue('dt')
tmbox = form.getvalue('tm')
con = MySQLdb.connect('localhost', 'root', '', 'mydb')
with con:
cur = con.cursor(MySQLdb.cursors.DictCursor)
s = "SELECT tmp, watts FROM currentcost WHERE dt ='" + dtbox + "' and tm like '" + tmbox + "%'"
cur.execute (s)
rows = cur.fetchall()
x=""
y=""
for row in rows:
x=x+row["watts"]+","
y=y+row["tmp"]+","
x="data:["+x+"]"
y="data:["+y+"]"
con.close()
req.write(x)
Javascript sn-p:
function draw(handleResponse) {
$.ajax({
url: "/currentcost.py",
data: {dt: frm.dt, tm: frm.tm},
success: function(response){
handleResponse(response);
}
});
<form name="frm" target="ifrm">
<iframe name="ifrm" id="ifrm" style="display:none"></iframe>
<fieldset style="width:300px">
<legend>Chart Date and Time</legend>
Alter the date and time settings <br>
Date:
<select name="dt">
我希望将表单值 dt 和 tm 传输到 python 程序,它将从中挑选出来并运行我的选择查询...我得到的只是一个空白:-(
感谢您的帮助
克里斯
【问题讨论】:
-
我已经修复了您问题中的格式。并请了解 Java 和 Javascript 之间的区别。
-
您似乎没有在 JS 中定义
frm。它是在其他地方定义的吗?你应该显示在哪里。 -
这与您的 Javascript 问题无关,但您当前的代码容易受到 SQL 注入的攻击。
-
@Daniel 抱歉,一定是太着急了,我明白 Java 和 Javascript 之间的区别。我在上面编辑了我的代码并添加了几行引用表单定义的行(我没有将整个页面包含在内)。我想我已经这样做了很长时间了,现在我看不到树木了!!任何帮助将不胜感激
-
@Andre 谢谢,我什至还没有看过 SQL 注入问题,因为它在我的 Raspberry PI 上运行它并不是一个重要的优先事项,但我同意你的观点,一旦工作我需要看看这些点。谢谢
标签: javascript python ajax