2015-10-05 128 views
0

我正在對控制器進行AJAX調用,並且我希望重定向到Success上的新頁面。所以我有我的成功回調函數中的重定向邏輯。但它不會重定向到新頁面,而是保持在同一頁面上。Spring MVC - 使用jQuery重定向

The intriguing thing is that a GET Request (with the form Data I just sent via POST) is made after the Ajax Callback is executed. that is, I see a GET Request in the Address Bar.

這裏是我的AJAX請求

$.ajax({ 
     url: "processData", 
     type: "POST", 
     dataType: 'json', 
     contentType:'application/json', 
     async: false, 
     data: JSON.stringify(req), 
     success: function(result) { 
      url = window.location.href; 
      url = url.replace("processData", "getMoreData"); 
      alert(url); // correct url is printed 
      window.location.replace(url); 
     }, 
     error: function() { 
      alert("--- Failure ---"); 
     } 
    }); 

有什麼錯在這裏?

+0

在更改url後,將location.reload添加爲最後一條語句。我認爲它應該工作。 – NightsWatch

+0

@PradeepSekar謝謝Pradeep,但它仍然不起作用。 – AgentX

+0

我想知道!一旦你手動重新加載它的時候在窗口中有url,它會把你帶到你期待的地方? – NightsWatch

回答

0

,什麼是錯與

window.location.href='some url'; 

這是一兩件事。另一個 - 你應該從問題中刪除'spring-mvc'標籤,因爲它實際上並不是Spring相關的。

+0

我已經試過了。它仍然沒有重定向到新的URL。該網址保持不變,現在有URL形式的參數。像localhost:8000/processData?name = xyz&value = abc – AgentX

+0

嗯,在我維護的應用程序中,我有同樣的事情,但沒有使用jQuery ajax調用,但使用普通POST請求登錄後(將表單數據放入URL)重定向本身起作用。我認爲你應該在不同的瀏覽器中嘗試它,並檢查它是否在DONE處理程序中工作+檢查ASYNC設置爲TRUE時是否有更改。並且(看到你的答案) - 顯示你的控制器方法。我假設你不是在控制器中重定向? – Chlebik

+0

我嘗試在Firefox中使用Firebug。有趣的問題是,當我在每一行的成功回調和步驟中放置一個斷點時,它首先打印一個警告框,然後重定向。但是,當我不逐行執行並運行它時,它不會重定向。 – AgentX

0

上面@Chlebik發佈的答案是正確的。我面臨的主要問題是both GET & POST requests were getting generated。所以有時GET請求正在進行& POST請求被取消。其他時間相反&我得到正確的結果。

我所要做的只是避免從默認窗體的提交按鈕中獲取GET請求而無法生成。

下面是該代碼:

$('form').on('submit', function(e) { 
    e.preventDefault(); 

我已經採取了代碼fhttp://stackoverflow.com/questions/32953573/form-processing-via-ajax-avoiding-both-get-post-請求變更