2013-07-25 127 views
1

我執行註銷功能的web應用程序。我有一個函數,當用戶點擊註銷按鈕時會調用它。302重定向與AJAX POST請求:

$.post(window.location.pathname + '/logout'); 

註銷服務只適用於發佈。

會發生什麼事是:http://myapp.com/logout.html

  • 顯然jQuery的AJAX調用剛剛從那裏拿起並立即發出GET請求所述位置:預期與位置返回

    1. 的302個狀態。
    2. GET請求返回正確的HTML,但它返回它的AJAX風格,重定向網頁不被瀏覽器

    裝,我想什麼發生的是:

    1. 的302個狀態與預期的位置返回:http://myapp.com/logout.html
    2. 瀏覽器重定向到指定位置
  • +0

    這不能完成,[按照規範(http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send() - 方法):「如果響應的HTTP狀態碼爲「302」:1)將請求URL設置爲由「位置」標頭傳送的URL 2)... *透明*遵循重定向...「規範不允許客戶端腳本觀察重定向已經發生。 - 無論如何,你爲什麼期望Ajax請求*重定向頁面?如果你有'200 OK'的迴應,你不會指望頁面導航到那個Ajax響應,對吧? – apsillers

    +0

    謝謝你爲我澄清這個問題,我懷疑這是原因。 – jakee

    回答

    4

    如果你不想處理使用Ajax的響應,然後不使用Ajax。

    <form action="/logout" method="post"> 
        <input type="submit" value="logout"> 
    </form> 
    
    +0

    非常簡單... – Bart

    +0

    一個聰明的解決方法,明天我會試試! – jakee

    +0

    '$('<形式行動= 「 '+ window.location.pathname +'/註銷」 的方法= 「郵報」「>「).submit();'這個工作就像一個魅力,謝謝! – jakee