2015-10-05 124 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-请求变更