2016-08-26 2 views
0

Meine Ajax ausführt, weil es die Zeile aus der Datenbank löscht:Wie umleiten Sie die Seite, nachdem Ajax abgeschlossen ist? erfolgreich

@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:/"); 
    } 
    ... 

Auf der Ansicht:

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

Das Problem ist, dass nach der ajax abgeschlossen ist dann sah ich die Zeile auf der Liste ! Also, wie auf die Liste aktuelle Seite nach ajax komplett umleiten?

UPDATE:

Hier Servlet-context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/" /> 

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> 
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/views/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

    <context:component-scan base-package="com.ambre.hib" /> 

</beans:beans> 

Und hier ist 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> 

Antwort

2

Betrachten Sie "Erfolg" Ereignis mit: http://api.jquery.com/Ajax_Events/

$.ajax({ 
     data: {"id":data}, 
     type: "POST", 
     url: "${home}"+"ajaxDeleteUser", 
     async: false, 
     success: function(result) { 
      location.href = "your_location" 
     } 
}); 
+0

es funktioniert nicht ! – pheromix

+0

@pheromix versuchen "Fehler" Ereignis statt "Erfolg", vielleicht ist Ihre Anfrage nicht erfolgreich – tmn4jq

+0

Was bedeutet es "funktioniert nicht", obwohl? Hast du die Konsole deines Browsers überprüft, gibt es etwas in den Logs? – tmn4jq

0

Sie können dies verwenden.Dies wird umleiten, nachdem die Antwort angekommen ist.

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

Sie haben hier zwei Möglichkeiten. Erstens können Sie auf dem vorderen Ende nach der Ajax-Umleitung abgeschlossen hat wie unter den Ajax-Erfolg Funktion:

success: function(result) { 
      location.href = "your_location" 
     } 

oder vorzugsweise können Sie es auf dem Backend den Job mit Spring MVC tun. Entfernen Sie dazu den @Responsebody cuz, den Sie nicht benötigen (Sie geben nichts zurück), und ändern Sie den Rückgabetyp wie unten beschrieben in einen String.

Hier verwende ich index.html, aber ändern Sie den Namen auf Ihre bevorzugte Seite. Solange Sie den Spring-View-Resolver richtig konfiguriert haben, sollte er von selbst funktionieren. Wenn Sie ein Suffix in der Ansicht Resolver (zB .jsp) gesetzt haben, dann sollten Sie nur den Namen der Seite, ohne das Suffix und Feder zurückkehren wird die Seite automatisch wie ausrechnen unter

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

die Methode, die Schnur im Steuerpult zurückbringt, arbeitet nicht! – pheromix

+0

poste deinen Frühling webconfigurer, hast du einen viewResolver? Welchen Fehler bekommst du? – george

+0

fertig, siehe Updates in meiner Frage. – pheromix

Verwandte Themen