2012-05-09 2 views
0

Я зову сервлет с помощью Ajax кодане могу пересылать на другой JSP из сервлета, вызываемого AJAX

$.ajax({ 
       url: 'servletName', 
       data: { 
        userID: selectedID 
       }, 
       type: 'post' 
      }); 

я могу напечатать значение внутри сервлета , но я не могу вперед к другому .. JSP ... код сервлет

id = request.getParameter("userID"); 
System.out.println("Selected ID : "+id); 

request.setAttribute("newID", id); 

RequestDispatcher rd = request.getRequestDispatcher("/newpage.jsp"); 
rd.forward(request, response); 

, если я называю этот сервлет из формы кнопки отправки, она работает. , но не пересылает другой JSP из кода ajax. есть ли другой способ сделать это ???? Может кто-нибудь, пожалуйста, помогите

+0

И что он делает это он не ожидает JSP? Что происходит? Любое исключение? Как вы диагностируете, что форварда не происходит? –

+0

Вы пытались 'rd.include()'? – home

ответ

3

В $.ajax, добавьте это:

dataType: 'text' 

В успешной части, добавьте это:

var url = "(your url)"; 
$(location).attr('href', url); 
0

Вы должны сделать понять тот факт, что, когда вы посылаете запрос HTTP от ajax, это означает, что вы отправляете запрос в отдельный поток, отличный от основного потока (сама страница, откуда вы отправляете запрос). Поэтому перенаправление на сервлет не отразится на стороне клиента. Чтобы достичь этого, отправьте отправку URL-адреса, на который вы хотите перенаправить в качестве ответа на запрос, и при успешном методе ajax просто используйте java-скрипт window.location (URL);

В сервлета

JSONObject jobj = new JSONObject() 
String urlToRedirect = "test.jsp"; 
jobj.put("url",urlStr); 
response.getWriter().write(jobj.toString()); 

На стороне клиента

$.ajax({ 
       url: 'servletName', 
       data: { 
        userID: selectedID 
       }, 
       type: 'post', 
       success: function(data){ 
        window.location = data.url; 
       } 

      }); 
Смежные вопросы