javascript - 不要在 html 中按下按钮获得价值
问题描述
我有一个按钮,点击它时只需要执行一个 javascript 函数。javascript 函数返回一个我打算在烧瓶后端捕获的字符串。目前,javascript 函数在 onclick 上运行。
编码:
<form id='details'method="post">
<input class="myButton" id="mybutton" type="submit" value="Save" onclick="getdata()">
</input>
</form>
烧瓶代码:
app.add_url_rule('/entry1', endpoint='entry1', view_func=new_data, methods=['GET', 'POST'] )
def new_data():
if request.method == 'POST':
details = request.form['details']
print(details)
在烧瓶中,当我给出 request.forms['details'] 时,我什么也没得到。我希望从 getdata 中获取返回的数据。我很确定,html方面存在一些问题。请指教。
有很多关于相同的评论,但它没有解决......只是想知道是否有任何其他方式来处理它,我只需要在按钮单击时收集的文本传输到 python 后端,看起来很简单,但就是不能完成这个:(谢谢
解决方案
#EDIT 2在此处检查此答案。
我在这里报告大部分内容作为参考:
- [
request.args
][2]:URL 查询字符串中的键/值对 - [
request.form
][3]:正文中的键/值对,来自 HTML 发布表单或非 JSON 编码的 JavaScript 请求 - [
request.files
][4]:正文中的文件,Flask 与form
. 必须使用 HTML 表单enctype=multipart/form-data
,否则将无法上传文件。 - [
request.values
][5]:组合args
andform
,args
如果键重叠则优先 - [
request.json
][6]:解析的 JSON 数据。请求必须具有application/json
内容类型,或使用 [request.get_json(force=True)
][7] 忽略内容类型。
所有这些都是 [ MultiDict
][8] 个实例(除了json
)。您可以使用以下方式访问值:
request.form['name']
:如果您知道密钥存在,请使用索引request.form.get('name')
:get
如果密钥可能不存在,则使用request.form.getlist('name')
:getlist
如果密钥被多次发送并且您想要一个值列表,请使用。get
只返回第一个值。
首先,如果您还添加烧瓶代码会很有帮助。话虽如此,将其添加到输入标签中:
<form id='details'method="post">
<input class="myButton" name="details" id="mybutton" type="submit" value="Save"
onclick="getdata()">
</input>
</form>
所以基本上你有一个 'name=""' 字段。
然后在python文件中,使用这个:
request.form['details']
如果您将值存储在变量中会更好(显然这取决于您,只是一个建议)
request_detail = request.form['details']
同样在表单标签中,您可能想要添加一个“action=”“”字段。这取决于烧瓶中如何路由装饰器。
例如,如果你有这个:
@app.route('/details)
def details():
pass
那么你的表格应该有这个:
<form id='details'method="post" action="/details">
或者
<form id='details'method="post" action="details">
编辑
尝试使用普通的路由装饰器来查看它是否修复:
@app.route('/entry1', methods=['GET', 'POST'])
def new_data():
if request.method == 'POST':
details = request.form['details']
print(details)
return render_template('filename.html')
如果您仍想使用 add_url_rule 试试这个:
app.add_url_rule('/', 'entry1', view_func=new_data, methods=['GET', 'POST'] )
推荐阅读
- database - 如何从数据库中检索堆栈
- python - 降低函数字典的代码复杂性
- node.js - 推荐用于 Node-RED 的 .gitignore
- javascript - 为什么我不断收到错误 s 未定义?
- firebase - 将 Firebase 连接到 BigQuery 沙盒
- html - HTML/CSS:表格宽度与 div 相同
- r - 在R中没有邻接矩阵的情况下动态查询顶点属性值
- java - 在 IntelliJ IDEA 中导入 Springframework 源代码
- r - 使用 lubridate 和 dyplr 过滤特定日期的数据集
- mysql - 列出在正负一列平均值范围内的 [行]