2013-06-01 4 views
2

Здесь, в приведенном ниже коде, я хочу вызвать сервлет через ajax, а затем перенаправить данные из сервлета в jsp.ajax, вызов сервлета работает нормально, но проблема перенаправляется на jsp страница не отображается в браузере и отображается одна и та же страница jsp, когда я использовал код javascript без ajax.ajax вызов сервлета и перенаправление на jsp

Javascript Ajax код в jspfile:

function generate(){ 
... 
... 
var url="RedirectServlet"; 
var ajax=new AJAXInteraction(url,"RedirectServlet"); 
var param ="FD="+FD+"&TD="+TD+"&actionid="+status+"&usercode="+usercode+"&action=reports"+""; 
ajax.send(param); 

.... 
} 
function AJAXInteraction(url, actionType) { 
    this.url = url; 

    var req = init(); 
    var actionRequested = actionType; 
    req.onreadystatechange = processRequest;  
    function init() { 
     if (window.XMLHttpRequest) { 
      return new XMLHttpRequest(); 
     } else if (window.ActiveXObject) { 
      return new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 

    function processRequest() { 
     if (req.readyState == 4) { 
      if (req.status == 200) {         
       if(actionRequested=="TestDelegation") {      
        PostProcess1(req.responseXML); 
       } 

      } 
     } 
    } 
    this.send = function(param) { 
     req.open("POST", url, true); 

     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

     req.send(param); 


    } 
}//end of AJAX Interaction object. 

код сервлета:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
     { 
    System.out.println("calling doPost() "); 

    response.setContentType("text/html;charset=WINDOWS-1256"); 
    String action=request.getParameter("action"); 
    System.out.println(action); 

    if(action.equals("reports")){ 
     System.out.println("inside reports"); 



     //Getting values from Reports_arb.jsp 
     String Fromdate=request.getParameter("FD"); 
     String Todate=request.getParameter("TD"); 
     String status=request.getParameter("actionid"); 
     String usercode=request.getParameter("usercode"); 

     //placing given values in a session 


     request.setAttribute("FD", Fromdate); 
     request.setAttribute("TD", Todate); 
     request.setAttribute("actionid", status); 
     request.setAttribute("usercode", usercode); 


     //Redirecting to showReport_arb.jsp 
     //response.sendRedirect("showReport_arb.jsp"); 

      ServletContext sc = getServletContext(); 
      sc.getRequestDispatcher("/sample.jsp").forward(request, response); 

ответ

0

Вместо создания request и response объект, используйте jquery Ajax. Это очень просто использовать.

/* Send the data using post and put the results in a div */ 

$.ajax({ 
    url: "/YourServlet", 
    type: "post", 
    data: values, 
    success: function(){ 
     alert("success"); 
     $("#result").html('submitted successfully'); 
    }, 
    error:function(){ 
     alert("failure"); 
     $("#result").html('there is error while submit'); 
    } 
}); 
8

Вы должны понимать тот факт, что, когда вы посылаете запрос 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; 
       } 

      }); 
+0

Что делать, если у меня были какие-то данные, которые я хочу, чтобы отправить на страницу JSP? –

+0

@AbhishekGhosh Насколько я знаю, вы не можете отправлять данные в jsp, если используете sendRedirect(). В случае, если вам нужно использовать переадресацию. – Artmal

+0

@ Rajan, что такое JSONObject, о котором вы упомянули в сервлете? Я намерен передать параметр из сервлета в jsp. – aiman

Смежные вопросы