javascript 如何通过 AJAX 将表单数据发布到python脚本?

j2cgzkjk  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(134)

我正在处理一个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程式码片段:

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程序,在那里它将挑选出它们并运行我的选择查询......我得到的只是一个空白:-(
期待你的帮助,谢谢
克里斯

mm5n2pyu

mm5n2pyu1#

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"插入第二个元素。

相关问题