2013-12-17 7 views
0

У меня странная проблема. У меня есть страница, использующая datepicker от https://github.com/dangrossman/bootstrap-daterangepicker на моей странице JSP. DatePicker будет выполнен страницу сервлета под названием getKodeTrsInv, используя следующий синтаксис:Страница JSP не перенаправляется на страницу сервлета После выполнения сервлета

function(start, end) { 
     console.log("Callback has been called!"); 
     $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
     var start = start.format('YYYY-MM-D'); 
     var end = end.format('YYYY-MM-D'); 
     getTransaction(start, end); 
} 

Функция getTransaction:

function getTransaction(start,end){ 
     $.ajax({ 
      type:"POST", 
      url:"<%= request.getContextPath() %>/getKodeTrsInv", 
      data:{ 
       startdate:start, 
       enddate:end 
      }, 
      success:function(msg){ 
       //alert("Data Inserted" + msg); 
      }, 
      error:function(msg){ 
       alert("Data Failed to save" + msg); 
      } 
     }); 
    } 

сервлет выполняется, чтобы показать результат от контроллера называется MasterPesanan с использованием функции functionGetTransactionTime (StartDate, EndDate);

Это страница сервлет:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    System sys = new System(); 

    try { 
     /* GET PARAMETER INPUTS */ 
     Date sd = sys.convertStringToDate(request.getParameter("startdate")); 
     Date ed = sys.convertStringToDate(request.getParameter("enddate")); 
     /* CONVERT TO DATE SQL TO EXECUTED*/ 
     java.sql.Date startdate = new java.sql.Date(sd.getTime()); 
     java.sql.Date enddate = new java.sql.Date(ed.getTime()); 

     /*EXECUTE THE CURRENT DATA*/ 
     MasterPesanan psn = new MasterPesanan(); 
     List<Pesanan> pesanan = psn.functionGetTransactionTime(startdate,enddate); 
     if(pesanan != null){ 
      request.setAttribute("kodeTransaksi", pesanan); 
      request.getRequestDispatcher("system/invoice.jsp").forward(request,response); 
     } else { 
      java.lang.System.out.println("Get Kode Transaction For Inovice Error"); 
     } 
    } catch(ParseException pe){ 
     java.lang.System.out.println("Get Kode Transaction For Invoice error : " + pe.getCause()); 
    } catch(Exception e) { 
     java.lang.System.out.println("Error Exception " + e); 
    } 

    finally {    
     java.lang.System.out.println("Get Kode Transaction For Invoice has been executed"); 
    } 
} 

Проблема заключается в том, когда сервлет выполняется, сервлет работает, но страница не перенаправляет. Я проверил FIREBUG, сервлет перенаправлен туда, но в моем браузере он застрял.

Для получения дополнительной информации список результатов из функции functionGetTransactionTime (startdate, enddate); показан в firebug. Любые идеи?

спасибо.

+0

есть ли кто-нибудь? – randytan

ответ

0

Переадресация перенаправляет страницу только при фактическом переходе на сервлет. Если сервлет вызывается через Ajax, ответ, возвращаемый Ajax, будет ответом от перенаправленной страницы в сервлет, но страница, которую пользователь видит, не перенаправляет. Только текст, возвращенный Ajax, будет со страницы, на которую перенаправляется сервлет. Другими словами, перенаправление происходит только в фоновом режиме. Пользователь по-прежнему будет видеть одну и ту же страницу. Если вам нужна реальная переадресация, где на странице пользователь видит изменения, то не используйте Ajax для вызова сервлета: i.e. Отправьте пользователя на сервлет с помощью HTML-формы (или обычной ссылки).

+0

поэтому, если возвращаемая переменная из ajax является цельной jsp-страницей, как я могу просто найти конкретный объект для потребления? Например, объект представляет собой список массивов. – randytan

+0

Вы можете форматировать вывод как обычный текст, в котором список разделяется определенным символом (например, звездочкой), а затем в javascript используется var array = output.split ("*"); превратить его в массив. – developerwjk

+0

Наконец-то я нашел решение, используя метод out.print. – randytan

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