Spring ajax完成后如何重定向页面?

Spring ajax完成后如何重定向页面?,spring,spring-mvc,spring-4,Spring,Spring Mvc,Spring 4,My ajax正在成功执行,因为它从数据库中删除了行: @Controller ... @ResponseBody @RequestMapping(value = "/ajaxDeleteUser", method = RequestMethod.POST) public ModelAndView ajaxDelUser(HttpServletRequest request) { int userId = Integer.parseInt(

My ajax正在成功执行,因为它从数据库中删除了行:

    @Controller
    ...
    @ResponseBody
    @RequestMapping(value = "/ajaxDeleteUser", method = RequestMethod.POST)
    public ModelAndView ajaxDelUser(HttpServletRequest request) {
        int userId = Integer.parseInt(request.getParameter("id"));
        userDao.delete(userId);
        return new ModelAndView("redirect:/");
    }
    ...
鉴于:

<c:url value="/" var="home" scope="request" />
$.ajax({
        data: {"id":data},
        type: "POST",
        url:  "${home}"+"ajaxDeleteUser",
        async: false
});
下面是web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>

    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

考虑使用成功事件:


考虑使用成功事件:


您可以使用它。这将在响应到达后重定向

$.ajax({
    data:{"id":data},
    type: "POST",  
    url:  "${home}"+"ajaxDeleteUser",  
    async: false,  
    success: function(result) {  
        var link = "http://www.sample.com";    
        $(location).attr('href',link);  
    });

您可以使用它。这将在响应到达后重定向

$.ajax({
    data:{"id":data},
    type: "POST",  
    url:  "${home}"+"ajaxDeleteUser",  
    async: false,  
    success: function(result) {  
        var link = "http://www.sample.com";    
        $(location).attr('href',link);  
    });

你有两个选择。首先,您可以在ajax完成后使用ajax成功函数在前端重定向,如下所示:

success: function(result) {
            location.href = "your_location"
        }
或者,您最好使用SpringMVC在后端完成这项工作。为此,请删除@Responsebody,因为您不需要它,因为您不返回任何内容,还可以将返回类型更改为如下所示的字符串

@RequestMapping(value = "/ajaxDeleteUser", method = RequestMethod.POST)
public String ajaxDelUser(HttpServletRequest request) {
    //your stuff goes here
    ....
    //important line
    return "redirect:/index.html";
}
这里我使用index.html,但将名称更改为您的首选页面。只要您正确配置了Spring视图解析器,它就应该能够自行工作。如果您在视图解析器中添加了后缀,例如.jsp,那么您应该只返回没有后缀的页面名称,spring将自动计算出页面,如下所示

return "redirect:/index";  //equals index.jsp

你有两个选择。首先,您可以在ajax完成后使用ajax成功函数在前端重定向,如下所示:

success: function(result) {
            location.href = "your_location"
        }
或者,您最好使用SpringMVC在后端完成这项工作。为此,请删除@Responsebody,因为您不需要它,因为您不返回任何内容,还可以将返回类型更改为如下所示的字符串

@RequestMapping(value = "/ajaxDeleteUser", method = RequestMethod.POST)
public String ajaxDelUser(HttpServletRequest request) {
    //your stuff goes here
    ....
    //important line
    return "redirect:/index.html";
}
这里我使用index.html,但将名称更改为您的首选页面。只要您正确配置了Spring视图解析器,它就应该能够自行工作。如果您在视图解析器中添加了后缀,例如.jsp,那么您应该只返回没有后缀的页面名称,spring将自动计算出页面,如下所示

return "redirect:/index";  //equals index.jsp

控制器中返回字符串的方法无效!发布您的spring网络配置程序,您有viewResolver吗?你得到了什么错误?它击中控制器了吗?如果你在控制器里放了一个制动点,它会去那里吗?${home}+ajaxDeleteUser是什么?ajax请求中的${home}是什么控制器中返回字符串的方法不起作用!发布您的spring网络配置程序,您有viewResolver吗?你得到了什么错误?它击中控制器了吗?如果你在控制器里放了一个制动点,它会去那里吗?${home}+ajaxDeleteUser是什么?ajax中的${home}是什么request@pheromix尝试“错误事件”而不是“成功”,也许您的请求没有成功,但这意味着什么不起作用?你检查过浏览器的控制台了吗,日志里有什么吗,我找到了问题的根源:我将启动ajax的链接的href属性值设置为。这是因为您需要将返回类型更改为字符串,并在ajax@pheromix尝试错误事件而不是成功,也许你的请求没有成功,但这意味着什么不起作用?您是否检查了浏览器的控制台,日志中是否有任何内容?好的,我找到了问题的根源:我将启动ajax的链接的href属性值设置为。这是因为您需要将返回类型更改为字符串,并在ajax中返回要重定向到的页面的名称