进行 AJAX 调用以将下拉值传递给 python 脚本

Posted

技术标签:

【中文标题】进行 AJAX 调用以将下拉值传递给 python 脚本【英文标题】:Make an AJAX call to pass drop down value to the python script 【发布时间】:2015-11-30 04:04:54 【问题描述】:

我想从包含数据库名称的下拉列表中传递选定的值,并将其传递给后台的 python 脚本,该脚本连接到传递的数据库名称。 以下是我写的ajax代码

<script type="text/javascript">
    $(document).ready(function()
        $("button").click(function()
            $.ajax(
          url : "/form_submit",
          data : $('#databases').val(),
          type : 'POST',
          success : alert("Hi dear count " + $('#databases').val())
        );
        );
    );
</script>

“数据库”是 html 中选择标记的 id。我正在写数据:

$('#databases').val() 

将数据传递给python代码。

以下是应该接受传递值的 python 代码。如果我直接从控制台运行下面的代码,那么它会以 json 格式返回结果,但间接运行它并没有成功

@app.route("/form_submit/", methods=['GET','POST'])
def connect():
    import json
    dtb = request.select['value']
    db = mysqldb.connect("localhost","root","",dtb)
    cursor =  db.cursor()
    cursor.execute("SELECT * FROM REPORT_SUITE")
    results = cursor.fetchall()   
    json_return_value =[]

    for result in results:
        table_data = 'REPORTSUITE_ID' : result[0], 'REPORTSUITE_NAME' : result[1], 'STAGING_DATABASE' : result[2], 'DWH_DATABASE' : result[3], 'TRANS_TABLE' : result[4]
        json_return_value.append(table_data)
    print ("hi")
    print json.dumps(json_return_value)
    return json.dumps(json_return_value)

我已将变量声明为dtb = request.select['value'],它应该接受通过 AJAX 调用传递的数据库名称。 此外,我应该能够在我的网络浏览器中看到返回的 JSON 格式的数据。 我环顾四周并应用了许多建议的解决方案,但我仍然无法确定如何传递和捕获传递的值。

【问题讨论】:

欢迎来到 ***。 “间接运行它没有成功”到底是什么意思?有错误信息吗?发送 AJAX 请求时,您是否在控制台中看到 print("hi") 结果?请查看how to ask a good question 以获得一些指导。 我正在使用 python 烧瓶创建一个 Web 应用程序,所以当我单击 html 页面上的按钮时,它应该转到 /form_submit/,接受传递的值,即数据库名称,连接到它然后返回json格式的数据显示在网页上,不打印'hi'。我得到的错误消息是“请求”对象没有属性“选择”。所以它无法识别我用于下拉的 您是否使用浏览器的开发者工具来确定传递给flask和/或调试javascript的请求数据? 我没有这样做,但我可以确定的是我可能没有正确发送和接收值。 我已经解决了这个问题。我做了以下更改 var data1 = new Object(); data1.name = $('#databases').val(); $.ajax( url : "form_submit", type : 'POST', data : data1 并在 python dtb = request.form['name'] 中接受如下 【参考方案1】:

对于POST请求,传递的值可以是obtained by

request.form['value']

【讨论】:

我找到了这个解决方法并应用了它,但它说全局名称'form'没有定义。我认为我编写的调用python函数并将值传递给它的代码不正确,并且python程序(dtb)中应该接受该值的变量也不正确。请检查我上面粘贴的代码。

以上是关于进行 AJAX 调用以将下拉值传递给 python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

下拉值不使用 ajax 传递给控制器

将 AJAX 结果作为道具传递给子组件

AJAX 调用以检索 JSON - 如何将结果格式化为屏幕

是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?

对 Spring Boot 控制器的 Ajax 调用以重定向视图

ajax调用后kendo mvvm不更新