Spring ajax完成后如何重定向页面?
My 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(
@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中返回要重定向到的页面的名称