在我的烧瓶应用程序中,您从一个页面开始,在该页面上单击几个按钮来计算项目名称,价格和数量。在下面的JS中,我使用该数据向网络服务器发出帖子请求:
$(document).on('click',".order_submit", function() {
prodJSON = JSON.stringify(prodData)
console.log(prodJSON)
$.ajax({
url: "/load_ajax",
type: 'POST',
data: prodJSON,
contentType: 'application/json;charset=UTF-8'
});
});
我想从下面的烧瓶代码中找到的是从home.html开始,然后当您提交订单时,您将被带到thankyou.html页面。我知道POST请求在load_ajax函数中有效,但由于某些原因,在订单提交时,页面不会更改。在订单提交后如何让它重定向?
@app.route('/', methods = ['GET','POST'])
def pos_page():
return render_template('home.html')
@app.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
data = request.get_json()
print list(data)
return render_template('thankyou.html')
答案 0 :(得分:1)
您无法从AJAX响应中重定向浏览器页面;你必须在你的AJAX处理程序中处理这个问题,明确地说:
$(document).on('click',".order_submit", function() {
prodJSON = JSON.stringify(prodData)
console.log(prodJSON)
$.ajax({
url: "/load_ajax",
type: 'POST',
data: prodJSON,
contentType: 'application/json;charset=UTF-8',
dataType: 'JSON',
success: function(data) {
document.location = data['location'];
}
});
});
这需要一个带有location
密钥的JSON响应;然后,您可以告诉AJAX处理程序重定向(使用flask.jsonify()
生成响应):
from flask import jsonify
@app.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
data = request.get_json()
print list(data)
return jsonify(location=url_for('thankyou'))
@app.route('/thankyou')
def thankyou():
return render_template('thankyou.html')
因此load_ajax()
告诉处理程序重定向的位置,thankyou.html
页面由单独的路径提供。