Spring boot 收到表单数据后,Spring MVC返回重定向不起作用

Spring boot 收到表单数据后,Spring MVC返回重定向不起作用,spring-boot,Spring Boot,任何人都可以查看返回重定向不起作用的原因吗?我的“/”路由显示一个表单-我正在使用jQuery将用户输入字符串化,并将其发送到“/login”并成功地接收它(使用system.out.println进行验证)-之后,当我尝试重定向到/chat/{username}时,它不起作用。例如,当我手动访问/聊天/约翰时,它就起作用了 即使是硬编码的重定向,return“redirect:/chat/John”也不起作用。在浏览器的web控制台网络选项卡中,我可以看到它将流量发送到/chat/John”,

任何人都可以查看返回重定向不起作用的原因吗?我的“/”路由显示一个表单-我正在使用jQuery将用户输入字符串化,并将其发送到“/login”并成功地接收它(使用system.out.println进行验证)-之后,当我尝试重定向到/chat/{username}时,它不起作用。例如,当我手动访问/聊天/约翰时,它就起作用了

即使是硬编码的重定向,return“redirect:/chat/John”也不起作用。在浏览器的web控制台网络选项卡中,我可以看到它将流量发送到/chat/John”,但网页不刷新


当我在JavaScript文件中成功调用Ajax后尝试重定向时,它会起作用。但是,当我在Spring控制器中使用“两者”返回重定向,并且在Ajax中使用success:function(data){window.location.href='/chat'/{username}返回重定向时,重定向会起作用。这是wierd-不确定为什么我需要两者才能使重定向起作用

@RequestMapping(headers=“Content Type=application/json”,value=“/login”,method=RequestMethod.POST)
公共字符串消息(@RequestBody List formData,Model){
字符串username=null;
Map formInputs=newhashmap();
用于(映射formInput:formData){
formInputs.put(formInput.get(“名称”),formInput.get(“值”);
用户名=formInput.get(“值”);
}
返回“重定向:/chat”+用户名;
}
@RequestMapping(value=“/chat/{username}”,method=RequestMethod.GET)
公共字符串聊天(@PathVariable(“用户名”)字符串用户名,型号){
model.addAttribute(“用户名”,用户名);
返回“message.jsp”;
}
下面是我的JavaScript文件,我在其中将表单数据发布到“/login”


您需要了解服务器端重定向与您的
windows.location.href
不同

首先,当您在服务器中说
redirect:/some url
时,它会发送一个相应的HTTP状态方法(302)以及它被重定向到浏览器的url(jQuery API)。浏览器(jQuery API)然后调用重定向URL,并获取重定向URL的HTML,该HTML可作为
success
回调的参数使用

所有这些都是异步发生的,最后,在
success
回调中,您将获得重定向URL的HTML


但是,如果您想重新加载页面,则不需要从服务器重定向。服务器方法只需向Ajax调用发送一个成功消息,然后在
Success
回调处理程序中,您可以调用
window.location.href
重新加载新页面。

可以这样尝试吗?返回“重定向:/chat?”/“+用户名;即使是硬编码的重定向,
return“redirect:/chat/John”
也不起作用。在浏览器的web控制台网络选项卡中,我可以看到它将流量发送到/chat/John”,但网页不会刷新。这样做如何?返回“重定向:/chat/{username}”;就像在这里一样不起作用。即使是硬编码重定向,也返回“重定向:/chat/John”“不起作用。在浏览器的web控制台网络选项卡中,我可以看到它将流量发送到/chat/John”,但网页不会刷新。当我在JavaScript文件中成功调用Ajax后尝试重定向时,它会工作。但是,当我在Spring控制器中有“两者”
返回重定向
成功:函数(数据)时,重定向会工作{window.location.href='/chat'/{username}}
在我的Ajax中。这是wierd-不确定为什么我需要这两种重定向才能工作。
 $(document).ready(function(){
        $("form").on('submit',function(e){
            e.preventDefault();
            $.ajax({
                url:'/login',
                type:'POST',
                data: JSON.stringify($("form").serializeArray()),
                contentType:'application/json',
                success:function(data){window.location.href='/chat'}
            })

            return false;
        })

   })
   })```