我已经用了很长一段时间了。
一切都很顺利,因为我在回避一个问题。在写入数据库时,我总是使用post (这会使页面重新加载)。
在邮寄表格等方面不是什么大问题。
现在,我需要一个“我想要帮助”按钮,它使db中的值为true或false。
基于这个值,我将生成提供帮助的html。
但是按钮无法刷新页面。这就是我被困的地方。
我只设法让它在不写入数据库的情况下工作(并将其存储在本地)。
有明显的事情我错过了吗?或者是一些能让它完成的瓶子魔法。
我正在考虑的解决方案是在离开页面后张贴到db。但这件事没起作用。
提前感谢!
发布于 2015-05-06 07:17:25
本例使用Ajax向烧瓶后端发送带有jQuery的数据并接收响应。这很简单,但是在用户单击“帮助”按钮后,我标记了您要处理后端处理的位置。
from flask import Flask, render_template_string, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template_string('''
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#send_data').on('click', function() {
$.ajax({
url: "{{ url_for('data_post') }}",
method: "POST",
data: {
data: $('#data').val()
},
success: function(data) {
$('#response').html(data);
}
});
});
});
</script>
</head>
<body>
<input type="text" name="" id="data">
<button id="send_data">Send</button>
<br />
<p id="response"></p>
</body>
</html>
''')
@app.route('/data', methods=['POST'])
def data_post():
# handle your database access, etc.
return 'received'
if __name__ == '__main__':
app.run()
这是一个带有文本框和按钮的简单索引页。在文本框中输入一些内容,然后单击按钮。您应该在临时表单下面的页面上看到“接收”,这是处理(在本例中没有任何处理)从后端返回的结果。
发布于 2015-05-06 07:20:55
我目前也在开发一个Flask应用程序,如果你不想重新加载网页,你必须打个AJAX电话。这可以很容易地通过jQuery.post()
函数来完成。此外,您可能需要在Flask中设置一个新的路由,以便提供post函数将向其发出请求的所需数据。若要禁用自动表单提交,可以使用:
$('form').submit(false);
对于手动投递和从服务器接收数据,您可以使用:
<button ... onclick="submitForm()">Submit</button>
和submitForm():
function submitForm()
{
$.post( url, { "data": "form-data" }).done(function (){...});
}
希望这能有所帮助。
https://stackoverflow.com/questions/30073942
复制相似问题