ajax - 从POST方法重定向后出现 flask 错误

标签 ajax redirect flask

我正在结合使用Flask和Javascript。用户从网页输入后,我将JSON对象发送回Flask服务器。即:

var xhr = new XMLHttpRequest();
xhr.open('POST', '/completed/');
xhr.setRequestHeader('Content-Type', 'application/json');
var stringifiedObject = dataResultToJSON(data);
xhr.send(stringifiedObject);


然后在Flask中:

@main_view.route('/completed/', methods=['POST'])
def completed():
    if (request.headers['Content-Type'].startswith('application/json')):
        #do stuff here
        return redirect(url_for("main_view.home"))

@main_view.route('/')
def home():
    logger.debug(">>home")
    return render_template('home.html')


当flask重定向到Ajax POST的“ home”后,我得到以下控制台输出:

DEBUG:myapp:>>home
INFO:werkzeug:127.0.0.1 - - [24/Apr/2016 20:13:15] "GET / HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [24/Apr/2016 20:13:15] "GET /%3C!DOCTYPE%20html%3E%3C!-- (... entire web page html)


奇怪的是,上面的第二条INFO语句-当我从其他任何地方重定向到首页时,我不会得到此行的打印-仅当我从“完成的” POST方法重定向时才会发生。 Werkzeug记录了整个home.html网页html,并且在Web客户端中出现错误:

NetworkError: 404 NOT FOUND - http://127.0.0.1:5000/%3C!DOCTYPE%20html%3E%3C!-- (... entire web page html)


我还按照此处的Make a POST request while redirecting in flask向重定向添加了代码= 307,但仍然收到相同的404错误。

我对如何解决这个问题感到困惑。

最佳答案

我认为您的问题是您将数据作为AJAX请求发布(即,不是浏览器导航,而是通过客户端编程方式发布)。在POST完成后告诉您的AJAX客户端重定向并没有多大意义。

然后,您试图告诉客户端进行重定向...但是重定向请求已返回到XMLHttpRequest。

我不是100%知道要发生什么,但是如果希望客户在发布数据后进行重定向,最好使用常规的表单发布。

我相信您对这个问题的回答可以更好地说明您正在尝试做的事情:

How to manage a redirect request after a jQuery Ajax call

关于ajax - 从POST方法重定向后出现 flask 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36823309/

相关文章:

javascript - 在 jquery 中添加类工作正常,但删除类不起作用

html - 在 response.sendRedirect() 中传递参数 - JSP

linux - cmd 2>&1 > 日志与 cmd > 日志 2>&1

asp.net-mvc - ASPNET MVC : Way to figure out the route of the referer (sic)?

python - 使用 Flask 进行文件字段验证无法正常工作

python - 如何读取 flask 中的多部分/表单数据

javascript - facebook graph api ajax XMLHttpRequest - 空结果?

javascript - 如何使用 jQuery/AJAX 在 HTML div 中加载 html 页面内容?

javascript - jQuery:加载txt文件并插入div

python - 如何使用 Flask 设置 RSS mimetype?