AJAX传递span文本至Flask时出现BadRequestKeyError问题求助
问题原因与解决方案
这个错误的核心原因很直白:你AJAX发送的数据键和Flask里尝试读取的键完全不匹配!
具体拆解
- 你的AJAX代码里,构造的请求数据是:
这意味着传给后端的表单数据,键是let spantext = { mainfile_column: $("#myspan").text(), };mainfile_column,对应的值是span标签里的文本内容。 - 但你的Flask路由里,却硬要去读
request.form['data']——这个data键根本没在请求里出现过,自然会触发BadRequestKeyError。 - 至于你说遍历能打印出正确值,那是因为遍历的是
request.form里实际存在的键值对(也就是mainfile_column和对应的文本),和你尝试读取的data完全是两码事。
修复方案(二选一即可)
方案1:修改Flask代码,匹配AJAX发送的键
把Flask里读取的键改成mainfile_column:
@flask_class.route('/receave_columns', methods=['POST']) def client_choice(): client_data = request.form['mainfile_column'] return jsonify({"data": client_data})
方案2:修改AJAX代码,发送data键
调整spantext对象的键为data:
let spantext = { data: $("#myspan").text(), };
额外小提醒
你的AJAX回调写法有个小坑:
column_promise.done(console.log("success"))
这样写会直接执行console.log("success"),而不是等请求成功后再执行。正确的写法应该传入一个函数:
column_promise.done(() => console.log("success"))
内容的提问来源于stack exchange,提问作者herbert mühlex
相关产品推荐
相关产品推荐

