2017-07-03 21 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在服務器端靜靜地執行了它的工作; –

相關問題