简体   繁体   English

通过ajax将jsp页面转换为servlet,反之亦然

[英]jsp page to servlet through ajax and vice versa

I am sending a orderid from jsp page to servlet through ajax and if the orderid of order table not match it will show an error message in the same jsp page through which request is made fine. 我正在通过ajax从jsp页面向servlet发送一个orderid,如果订单表的orderid不匹配,它将在同一jsp页面中显示一条错误消息,通过该请求可以很好地解决这个问题。 Now my question is a when i sending a valid orderid it should forward the page to the other jsp page through servlet which is not happing and also not showing any error 现在我的问题是,当我发送有效的orderid时,它应该通过servlet将页面转发到另一个jsp页面,而该servlet不会进行封装并且也不会显示任何错误

jsp page 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 code jQuery代码

$('#finduy').click(function(event){ $('#finduy')。click(function(event){

            $.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 code servlet代码

if(!(cmd==null)&&cmd.equalsIgnoreCase("single")){ 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;
            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();
        }

You can always send a response code back from the servlet and then do a forward . 您始终可以从Servlet发送回响应代码,然后进行转发。 For example you can send success and in which case you can do document.location to new servlet location. 例如,您可以发送成功,在这种情况下,您可以将document.location执行到新的servlet位置。

Also uploading files is now possible in html5 using ajax . 现在也可以使用ajax在html5中上传文件。

I Got The answer thanks user1889970 your trick helps 我得到了答案谢谢user1889970您的把戏帮助

i created a new checking point whose work is only to check whether orderid is valid if valid it forward to new page or show invalid 我创建了一个新的检查点,其工作仅是为了检查orderid是否有效(如果有效)将其转发到新页面或显示无效

jquery code: 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 code: 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;
    }

second part of cmd=single: cmd = single的第二部分:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM