关于jquery:Flask如何在ajax调用后重定向到新页面

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浏览器没有重定向到/somepage


正如我在flask应用程序中看到的,您试图输出数据并重定向到主页,但是应用程序将执行消息的输出部分,并且不会继续重定向,如果需要进行重定向,应该在Ajax调用中进行。

1
2
3
success: function(){
    window.location.href="somepage";
}