当我使用表单操作提交我的表单数据时,我能够快速返回消息。在
窗体视图:
@app.route('/register')
def register():
return render_template('register.html')
在注册.HTML在
^{pr2}$现在我使用ajax,我的flash消息不再出现。在
$(document).ready(function(){
(code removed for clarity)
if (error == false) {
$.ajax({
type: "POST",
url: "/processRegister",
data: { varEmail: email, varPassword: pw}
});//ajax call
}//end if
});//submit
});//load validate.js
});//doc rdy
我处理表单数据的视图:
@app.route('/processRegister', methods=['POST'])
def processRegister():
if request.method == 'POST':
email = request.form['varEmail']
flash("message -----> " + email)
return render_template('register.html')
“我的布局”页面使用以下代码段进行闪烁:
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
问题是AJAX调用不会重新呈现DOM。在
Javascript将作为调用的结果接收呈现的模板。在
我可以想象在jQuery的返回响应中,flash消息就在其中。在
浏览器不会将返回的值视为要呈现的内容。在
闪现的消息是stored as part of the session,在服务器端呈现模板时检索这些消息。客户端JavaScript无法访问会话cookie。即使是这样,也不容易用JavaScript解码。即使您可以解码它,也假设会话是一个cookie,而不是存储在服务器或其他东西上。在
如果您想呈现一些响应AJAX请求的消息,您应该在响应中发送这些消息,并在用JavaScript编写的处理程序中呈现它们。在使用重定向时,为了方便起见,提供了Flashed消息,但是由于您使用的是AJAX,所以您可以跳过中间步骤,直接返回消息。在
相关问题 更多 >
编程相关推荐