Flask redirect(urlfor()) doesn't reload the page
本问题已经有最佳答案,请猛点这里访问。
我有一个页面,上面有一个按钮,可以让
英利
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from flask import Flask, render_template, request, redirect, url_for app = Flask(__name__) @app.route('/second_route', methods=['POST']) def second_route(): print request.json return redirect(url_for('hello_world', message='test')) @app.route('/') def hello_world(message=None): return render_template('index.html', message=message) app.run() |
索引文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"> $(document).ready(function () { $('#mybutton').click(function () { $.ajax({ type:"POST", contentType:"application/json; charset=utf-8", url:"/second_route", data: JSON.stringify({}), success: [], dataType:"json" }); }); }); </head> <body> {{ message }} <button id="mybutton" name="mybutton" type="button">Click Me!</button> </body> </html> |
这就是我为阅读问题的人解决问题的方式。
将我的发布请求更改为发布到相同的路由。使用此调用加载页面:
1 2 3 4 | var posting = $.post(window.location.href, {'some key': 'some value'}); posting.done(function( ) { window.location.replace(window.location.href); }); |
Ajax无法处理重定向响应afaik。不过,您可以将
1 2 3 4 5 6 7 8 9 10 11 12 13 | $.ajax({ type:"POST", contentType:"application/json; charset=utf-8", url:"/second_route", data: JSON.stringify({}), success: [], dataType:"json" }).done(function(){ $('#message').html('test'); window.location.href = '/'; }).fail(function(response){ $('#message').html(response['responseText']); }); |
为了重定向,您可以将