Flask how to redirect to new page after ajax call
本问题已经有最佳答案,请猛点这里访问。
我尝试在Ajax发布后重定向到一个新页面,但是我还没有成功。
我的模板如下:
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 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> <script type="text/javascript"> $(function() { var selectedForm = 0; function doWork() { var response = $('#reply1').val(); console.log(response); $.post({url:"receiver", data: JSON.stringify({selectedForm: selectedForm, response : response}), contentType:"application/json", success: function(){}}); } $('.respondButton').click(function(e) { e.preventDefault(); var selectedButton = $(this).attr('id'); selectedForm = selectedButton.replace('response', ''); console.log(selectedForm); }); $('#submitButton1').click(function(e) { e.preventDefault(); doWork(); }); }); |
HTML部分:
1 2 3 4 5 6 7 8 9 10 11 | <span>response1</span> <span>response2</span> <form action="/receiver" method="post" id="form1" name="form1"> <textarea type="text" rows ="3" name="reply1" id="reply1"></textarea> <button type="submit" name="submitButton1" id="submitButton1">Submit</button> </form> |
在服务器端,flask应用程序如下所示:
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 29 30 31 32 33 | #!flask/bin/python import sys from flask import Flask, render_template, request, redirect, Response, url_for import random, json app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/somepage') def somepage(): return 'Success' @app.route('/receiver', methods = ['POST']) def worker(): data = request.get_json() result = '' result = str(data) print(result) return (redirect(url_for('somepage'))) if __name__ == '__main__': app.run(debug=True) |
当我打开chrome开发者工具并点击network时,它看起来很好,我可能看到成功消息,但是stil浏览器没有重定向到
正如我在flask应用程序中看到的,您试图输出数据并重定向到主页,但是应用程序将执行消息的输出部分,并且不会继续重定向,如果需要进行重定向,应该在Ajax调用中进行。
1 2 3 | success: function(){ window.location.href="somepage"; } |