jquery - 使用来自html的flask和jquery将数据传递到mySQL数据库
问题描述
大家好,我正在尝试通过烧瓶将来自 HTML 页面的信息传递到 MySQL 数据库中,但我卡住并感到困惑
这是我的 python-scores.py(数据库连接是带有凭据等的 conn_db)
import mysql.connector as conn
from flask import (
render_template,
Flask,
jsonify,
request,
abort as ab
)
app = Flask(__name__, template_folder='C:\\Users\\thomp\\PycharmProjects\\com661_1819_team_30\\source\\template\\')
# Credentials here in code
WHO = '*********'
PWD = '********'
DATABASE = '********'
def conn_db():
return conn.connect(user=WHO,
password=PWD,
host='**********',
database=DATABASE
)
@app.route('/')
def index():
return render_template('scores.html')
@app.route('/addScore', methods=['POST'])
def add_score():
cnx = conn_db()
cursor = cnx.cursor()
MatchID = request.form['matchID']
Home_Score = request.form['homeScore']
Away_Score = request.form['awayScore']
print("Updating score")
if not request.json:
ab(400)
insert_score = "INSERT INTO scores (Match_ID, Home_Score, Away_Score) VALUES (%s,%s,%s)"
cursor.execute(insert_score, (MatchID, Home_Score, Away_Score))
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
以下是我的 html 文件 score.html (张贴为图片)
非常感谢任何帮助,谢谢大家
解决方案
根据您给我们的信息,我想您的问题之一是您没有发布输入字段的内容,而是发布了 DOM 对象本身。如果您不确定 javascript 代码,最好在浏览器的开发者控制台中尝试一下。
要修复该错误,只需添加val()
到提交功能,例如
var $matchID = $('#matchID').val()
另外我认为您应该从 AJAX 调用的主机参数中删除尾部斜杠,因为您在没有它的情况下在烧瓶中定义了您的路线。
两个旁注:
- 您应该转义发布的数据以防止SQL 注入攻击。我相信您使用的框架
conn.escape_string()
为此目的提供了此功能。 - 在 JavaScript 中不习惯在变量名前加上美元符号。我想大多数人更喜欢camelCase。尤其是在使用 jQuery 时,向变量添加额外的美元符号可能会导致混淆。
PS:如果您发布特定问题或遇到的任何错误输出,这将非常有帮助。同样发布屏幕截图而不是实际代码似乎没有必要,并且使调试问题变得更加困难。
推荐阅读
- php - Woocommerce 未找到产品 - 显示自定义搜索结果页面
- ios - 如何使用 ios swift 3 保存和检索 pdf 注释
- java - Websphere wsdl 服务器绑定问题与第二个 WAR 文件
- c# - 跨控件的自定义行为 - 使用自定义控件或具有一个孩子的用户控件
- facebook-graph-api - 已达到 Facebook API 调用速率限制
- c# - 如何使用 asp.net 将日期时间参数传递给您的存储过程
- r - 在 Shinyapps 中计算
- image - Matlab imwrite 改变了我的颜色
- java - 在 GitLab 中使用 Snyk 进行 gradle wrapper 时出现权限错误
- cmake - 使用 CTest 和 Cdash 上传图像差异