2013-05-25 41 views
1

我通过ajax发送一个从jsp页面到servlet的orderid,如果订单表格的orderid与它不匹配,将在通过其发出请求的相同jsp页面中显示错误 精细。现在我的问题是,当我发送一个有效的OrderID应该 通过servlet的未happing,也没有表现出任何差错jsp页面通过ajax与servlet相反

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" /> 
转发页面的其他JSP页面

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); 
      } 
      }); 

servlet代码

如果(!(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){你的JavaScript方法的'段,你应该发送一个非Ajax提交到服务器,并在那里你会处理转发。请记住,你不能在ajax提交中进行转发。 –

+0

感谢Luiggi Mendoza ..我直接通过jsp scriplets工作,但我想知道是否有任何方法通过ajax我可以转发到另一个servlet – Deepak

+0

有一些事情,你可以在ajax调用和其他人可以'吨。在你无法直接使用ajax处理的东西之间:转发/重定向到另一个页面,上传一个文件。 –

回答

0

您可以随时发送响应从servlet代码返回,然后做一个前进。例如,您可以发送成功,在这种情况下,您可以将document.location执行到新的servlet位置。

上传文件现在可以在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); 

     } 
     }); 
    }); 

servlet代码:

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; 
    } 

CMD的第二部分=单:

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(); 
     }