我正在努力处理python程序和ajax请求。我试图从我的Javascript中获取一些数据到python程序中,我一直在使用的常规方法.getfirst(字段名称)不起作用,我认为这是因为请求是通过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片段:
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程序,然后它将选择它们并运行我的选择查询...我得到的所有内容都是空白: - (
感谢您的帮助
克里斯
答案 0 :(得分:0)
您的ajax调用应为"POST"
类型,您可以使用.serialize()
序列化表单中的字段。
$.ajax({
url: "/currentcost.py",
type: "POST",
data: $("form[name='frm']").serialize(),
success: function(response){
handleResponse(response);
}
});
修改强>
您通常不应该使用GET请求进行表单提交。也就是说,ajax GET看起来应该是这样的:
$.ajax({
url: "/currentcost.py",
data: {dt: $("#dt").val(), tm: $("#tm").val() },
success: function(response){
handleResponse(response);
}
});
这假设您已将属性id="dt"
插入第一个元素,将id="tm"
插入第二个元素。