2013-05-25 1 views
1

Я отправляю заказ с страницы jsp на сервлет через ajax, и если заказ заказа таблицы заказов не соответствует ему, будет отображаться сообщение об ошибке на той же странице jsp, через которую выполняется запрос хорошо. Теперь мой вопрос, это когда я отправка действительный OrderID он должен переслать страницу в другой JSP странице через сервлет, который не happing, а также не показывает какую-либо ошибкуjsp страница для сервлета через ajax и наоборот

страница JSP

<input type="hidden" name=cmd value="single"/> 
    Enter Order No <input type="text" name="oid" id="oidss" /><input type="button" value="Search" id="finduy" /> 

JQuery код

$ ('# finduy'). нажмите (функция (событие) {

  $.ajax({ 
       type:'POST', 
       url:"Order", 
       style:"full", 
       maxRows:12, 
       dataType:"json", 
       data:{"cmd":"single","oid":encodeURIComponent($('#oidss').val())}, 

       beforeSend:function(){/*alert("data is sending")*/}, 
       //problem is here 
       success:function(data,textStatus,jqXHR){ 
         if(data.success){ 

       } 
       else 
        { 
        alert("invalid Order No"); 
        $('#oidss').val(""); 
        $('#oidss').focus(); 


        } 

       }, 
       error:function(jqXHR, textStatus, errorThrown){ 
       console.log('textStatus:' + textStatus); 
       console.log('errorThrown:' + errorThrown); 
       console.log("Something really bad happened " + textStatus); 
       console.log("jqXHR.responseText " +jqXHR.responseText); 

        $("#ajaxResponse").html(jqXHR.responseText); 
      } 
      }); 

код сервлета

если (! (CMD == NULL) & & cmd.equalsIgnoreCase ("сингл")) {

 OrderDB odb = new OrderDB(); 
     Order orders = new Order() ; 
     List<OrderDetail> odetaillist = new ArrayList<OrderDetail>(); 
     List<Order> ordercustlist = new ArrayList<Order>(); 


     String orderids = request.getParameter("oid"); 


     try { 
      orders = odb.getOrdersById(orderids); 
      odetaillist = odb.getOrdersDetailsByOrderId(orderids); 
      ordercustlist = odb.getOrderFromCustomer(orderids); 
      Customer customerinfo = odb.getOrderCustomer(orderids); 
      request.setAttribute("OrderSingle", orders); 
      request.setAttribute("OrderDetail", odetaillist); 
      request.setAttribute("OrderCust", ordercustlist); 
      request.setAttribute("CustomerInfo", customerinfo); 
      redirect=orderinfo; 
      RequestDispatcher view = request.getRequestDispatcher(redirect); 
      view.forward(request, response); 

      if(orders.getOrderid() == null){ 
       JsonObject myobj = new JsonObject(); 
       myobj.addProperty("success", false); 
       PrintWriter out = response.getWriter(); 
       out.print(myobj); 
       out.close(); 
       return; 
      } 



     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

В вашем 'если (data.success) {' сегмент вашего яваскрипта метода, вы должны отправить не-Аякса отправить на сервер и там вы будете обрабатывать переадресацию. Помните, что вы не можете делать переадресацию в ajax submit. –

+0

спасибо Luiggi Mendoza .. Я пробовал прямо через jsp scriplets, он работает, но я хочу знать, есть ли какой-либо метод через ajax, я могу переслать другой сервлет – Deepak

+0

Есть вещи, которые вы можете сделать в вызове ajax и других, т. Между вещами, с которыми вы не можете напрямую обращаться с ajax: переслать/перенаправить на другую страницу, загрузить файл. –

ответ

0

Вы всегда можете отправить ответ код обратно из сервлета, а затем сделать вперед. Например, вы можете отправить успех, и в этом случае вы можете сделать document.location в новом местоположении сервлета.

Загрузка файлов теперь возможна в html5 с помощью ajax.

0

Я получил ответ спасибо user1889970 ваш трюк помогает

я создал новую точку проверки, чья работа только, чтобы проверить, является ли действительным, если в силе его вперед к новой странице OrderID или показать неверный код

Jquery: код

$("#find").click(function(event){ 
    var cname = $('#oidss').val(); 
     $.ajax({ 
      type:'POST', 
      url:"Order", 
      style:"full", 
      maxRows:12, 
      dataType:"json", 
      data:{"cmd":"find","oid":encodeURIComponent(cname)}, 

      beforeSend:function(){/*alert("data is sending")*/}, 
      success:function(data,textStatus,jqXHR){ 
        if(data.success){ 
         window.location.href='Order?cmd=single&oid='+cname; 
       } 
      else 
       { 
       alert("Invalid Order No."); 
       $('#oidss').val(""); 
       $('#oidss').focus(); 
       } 

      }, 
      error:function(jqXHR, textStatus, errorThrown){ 
      console.log('textStatus:' + textStatus); 
      console.log('errorThrown:' + errorThrown); 
      console.log("Something really bad happened " + textStatus); 
      console.log("jqXHR.responseText " +jqXHR.responseText); 

     } 
     }); 
    }); 

сервлет:

else if(!(cmd==null)&&cmd.equalsIgnoreCase("find")){ 

     OrderDB odb   = new OrderDB(); 
     Order orders  = new Order() ; 
     JsonObject myobj = new JsonObject(); 

     PrintWriter out = response.getWriter(); 
     String orderids = request.getParameter("oid"); 

     try {orders = odb.getOrdersById(orderids); 
     if(orders.getOrderid() != null){ 
      myobj.addProperty("success", true); 
     } 
     else{ 
      myobj.addProperty("success", false); 
     } 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     out.print(myobj); 
     out.close(); 
     return; 
    } 

вторая часть ЦМД = одинарная:

if(!(cmd==null)&&cmd.equalsIgnoreCase("single")){ 

     OrderDB odb = new OrderDB(); 
     Order orders = new Order() ; 
     List<OrderDetail> odetaillist = new ArrayList<OrderDetail>(); 
     List<Order> ordercustlist = new ArrayList<Order>(); 
     String orderids = request.getParameter("oid"); 


     try { 
      orders = odb.getOrdersById(orderids); 
      odetaillist = odb.getOrdersDetailsByOrderId(orderids); 
      ordercustlist = odb.getOrderFromCustomer(orderids); 
      Customer customerinfo = odb.getOrderCustomer(orderids); 
      request.setAttribute("OrderSingle", orders); 
      request.setAttribute("OrderDetail", odetaillist); 
      request.setAttribute("OrderCust", ordercustlist); 
      request.setAttribute("CustomerInfo", customerinfo); 
      redirect=orderinfo; 

     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }