2017-07-03 56 views
1

TL;对于管理员DR:不重复。我试图强制重定向从烧瓶后端用户完成使用瓶调查之后,但它不工作(尽管从我的理解,它应该 - 它在控制台上水平,但因为它没有表现,甚至,但浏览器不重新加载)。我不想在ajax上做这件事,现在我尽量保持最小化,调查正确地将“ajax POST”发送到“/ survey”,我现在想保持这种状态。此外,我想了解该瓶问题,而不是与其他解决方案替换它,我不完全理解尚未重定向完成了瓶的调查之后,用户无法正常工作

我想学习Web开发的一些基础知识,想做出一个有些有趣的Web应用程序使用Flask作为后端的服务。

我的调查项目的子网站看起来有点像这样:

@app.route("/survey", methods=["GET", "POST"]) 
@login_required 
def survey(): 
    if request.method == "GET": 
     return render_template("survey.html") 

    if request.method == "POST": 
     x = request.get_json(silent=True) 
     print(x) 
     //todo: manipulate on x and classify a user into a group 
     return redirect(url_for("index")) // just for now redirect everybody 

我是一个完整的AJAX/JS新手,但我知道我的SurveyJS调查网站后位(“/调查”)的修改是将正确的JSON发送到后端(通过在完成调查后打印大量的x变量)。可悲的是,重定向不起作用,尽管服务器实际上试图做到这一点 - 我在控制台中拥有标准的200 OK代码,我总是获得其他补贴的重定向,但网站没有更改(不加载圈或任何东西)。完成后,我发布了POST ajax请求,调查网站给出了标准的SurveyJS空白网站,其中“感谢您完成调查!” (这不加载网页或任何东西)

控制台瓶提示:

INFO:werkzeug:127.0.0.1 - - [03/Jul/2017 20:06:44] "POST /survey HTTP/1.1" 302 - 
INFO:werkzeug:127.0.0.1 - - [03/Jul/2017 20:06:45] "GET/HTTP/1.1" 200 - 

我能做些什么以从该烧瓶水平使重定向工作

回答

0

我目前工作的一个瓶/ Vue.js(JavaScript)的项目,我跑快速测试来模拟这种情况,我几乎可以肯定,这是发生了什么事:

您的水壶代码好好工作。问题出在SurveyJS网站上。当SurveyJS网站发送POST请求时,它大概是用JavaScript(而不是HTML表单提交)来做的,而且他们的JavaScript代码没有设置处理来自服务器的重定向响应的逻辑,所以它有效地忽略来自服务器的响应。

这是当你有一个纯HTML的网站上有一个形式大于不同:在这种情况下,我粗略的理解是,浏览器发送POST请求并处理来自服务器的响应,并且使其正常运行处理重定向响应。

+0

非常感谢,它真的为我澄清了这个想法。我想我得到了我想要的效果。在我的sendDataToServey(survey)函数中,除了Ajax之外,我还包含'window.location.href =“/ **'**。这直接为我提供了我想要的重定向,并且POST在服务器端静静地执行了它的工作; –