2016-08-26 6 views
0

それがデータベースから行を削除しますので、私のアヤックスが正常に実行されます。ビューで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 
}); 

問題がajax後、私は、リスト上の行を完全に見ているということです!どのようにajaxの後にリストの実際のページにリダイレクトするのですか?

UPDATE:ここ

は、サーブレットの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> 

そして、ここでは、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> 

答えて

2

は "成功" イベントの使用を検討してください: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

以下のようにちょうどサフィックスのないページの名前と春が自動的にページを把握します返す必要があります! – pheromix

+0

@pheromix "success"の代わりに "error"イベントを試してみてください。おそらくあなたのリクエストは成功しません。 – tmn4jq

+0

「動作しません」とはどういう意味ですか?ブラウザのコンソールを確認しましたか?ログには何かがありますか? – tmn4jq

0

これを使用することができます。応答が到着した後にリダイレクトされます。

$.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

ここでは2つのオプションがあります。

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

、または好ましくは、あなたが仕事をする春のMVCを使用してバックエンドでそれを行うことができます:アヤックスは以下のようなAjaxの成功の機能を使用して完了した後にまず、あなたはフロントエンドにリダイレクトすることができます。この目的のために、@Responsebodyを削除する必要はありません(何も返されていません)。戻り値の型を以下のようにStringに変更します。

@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ファイル用)ビューリゾルバに接尾辞を入れているなら、あなたはそれが動作しません

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

コントローラの文字列を返すメソッドが機能しません! – pheromix

+0

あなたの春webconfigurerを投稿して、viewResolverを持っていますか?どのようなエラーが表示されますか? – george

+0

完了、私の質問の更新を参照してください。 – pheromix

関連する問題