jQuery+json+struct2+ajax传输数据的过程:

 

 


 

(1)      简单的没有用到json的传输字符串的方式为:

(登录功能作为例子)

后台的代码如下,用String类型的变量responseText来把数据传递给前台接收:

    public String ajaxLogin() {

 

       try {

           String responseText ="";

           //读取请求的参数

           HttpServletRequest request = ServletActionContext.getRequest();

           String loginname = request.getParameter("name");

           String loginpwd= request.getParameter("pwd");

           Manager manager = new Manager();

           manager.setName(name);

           manager.setPwd(pwd);

           //进行登录验证

           if (loginname ==null || loginname.trim().length() < 1) {

 

              responseText = "对不起,账号不能为空";

 

           } elseif (loginpwd==null ||loginpwd.trim().length()< 1) {

 

              responseText = "对不起,密码不能为空";

 

           } else {

              if (managerDAO.checkManager(manager)) {

 

                  session.put("manager", manager.getName());

 

                  responseText ="1";

 

              } else {

                  responseText ="0";

              }

           }

 

           //获取原始的PrintWriter对象,以便输出响应结果,而不用跳转到某个试图

           HttpServletResponse response = ServletActionContext.getResponse();

           //设置字符集

           response.setContentType("text/plain");//设置输出为文字流

           response.setCharacterEncoding("UTF-8");

           PrintWriter out = response.getWriter();

 

           //直接输出响应的内容

           out.println(responseText);

           out.flush();

           out.close();

 

       } catch (Exception e) {

           //TODO: handleexception

           e.printStackTrace();

       }

       returnnull;//不需要跳转某个视图因为上面已经有了直接输出的响应结果

 

}

 

 

前台用jQuery实现的异步操作来处理后台传过来的数据:

        varurl = "<%=basePath%>manager/managerAction!ajaxLogin";

        $.ajax({url : url, type :"post", data :{name : $('#name').val() , pwd : $('#pwd').val()},

            success : function(data) {

              if(data==1){

                 window.location.href="<%=basePath%>index.jsp";

              }else{

                 alert("登录失败:用户名或者密码错误");

              }

             

            }

        });

       }

 

 

 

 

 

(2)  第二种传递数据方式:(用json来传递数据,把一个要传得对象先序列化成json形式的)

 

后台是做一个将book对象转化成json对象的过程:

    public String borrowlist()throws IOException {

       System.out.println("borrowing......");

 

       //读取请求的参数  

       HttpServletRequest request = ServletActionContext.getRequest();

       String key = request.getParameter("inputkey");

 

       if (key !=null && !key.equals("")) {

           //               String operator =request.getParameter("operator");

           book =bookDAO.queryB(key);

           session.put("book",book);

           System.out.println("book:" +book);

 

       }

       if (book !=null) {

           JSONObject jsonObject = JSONObject.fromObject(book);

           HttpServletResponseresponse = ServletActionContext.getResponse();

           response.setContentType("text/json");//设置输出为文字流 

           response.setCharacterEncoding("UTF-8");

           PrintWriter out = response.getWriter();

           out.println(jsonObject.toString());

           out.flush();

           out.close();

       }

 

       returnnull;

 

}

 

 

 

前台接收json数据的格式如下:

       functionborrowlist1(){

              var inputkey=$('#inputkey').val();

              if(inputkey==''){

                  alert("请输入图书编号");

                  return false;

              }

              var url="<%=basePath%>borrow/borrowAction!borrowlist";

              vardata={inputkey:inputkey};

              vartype="json";

                $.post(url,data,function(result){

                 result = eval(result);

                 if(result==null){

                    alert("没有该书本信息");

                    return;

                 }

                 $(".table_borrow").append("<tr><td>"+result.bookName+"</td><td>"+newDate()+"</td><td>"+result.bookcaseName+"</td><td>"+result.price+"</td></tr>");

                  varbut=$('#button2').val();

                  document.getElementById("button2").disabled=false;

                 // $('#button2').disabled="disabled";

                 },type);

           }

 

 

 

如果是对象的集合,传递的方式则如下:

 

后台代码中就用JSonArray这个类把集合序列化就好了,然后前台也以数组的方式来接收就好了


后台代码:

publicString bookborrow(){  

       System.out.println("borrowing......");

        try {  

            StringresponseText="";  

            //读取请求的参数  

            HttpServletRequest request =ServletActionContext.getRequest();  

            Stringbarcode=request.getParameter("barcode");

            Reader reader1=new Reader();

           reader1.setBarcode(barcode);

            Reader reader = (Reader) readerDAO.queryM(reader1);//查询该条形码的用户

 

            List<Borrow>col=borrowDAO.borrowinfo(barcode);

 

            JSONArray json4 = (JSONArray)JSONArray.fromObject(col);

           

            HttpServletResponse response =ServletActionContext.getResponse();

           response.setHeader("cache-control", "no-cache");

           response.setContentType("text/json");//设置输出为文字流 

           response.setCharacterEncoding("UTF-8"); 

            PrintWriter out =response.getWriter(); 

          

            //直接输出响应的内容  

            out.println(json4);

           

 

    /*                 JSONObjectjson=new JSONObject(); 

                json.accumulate("success",true);       

           json.accumulate("readerinfo", reader);*/ 

//           request.setAttribute("data", json4.toString());

           /* JSONObject json2=newJSONObject(); 

                json2.accumulate("success",true); 

           json2.accumulate("borrowinfo",borrowDAO.borrowinfo(barcode)); 

           request.setAttribute("borrowdata", json2.toString());*/

           

            //获取原始的PrintWriter对象,以便输出响应结果,而不用跳转到某个试图  

/*            HttpServletResponse response =ServletActionContext.getResponse();  

            //设置字符集  

           response.setContentType("text/plain");//设置输出为文字流 

            response.setCharacterEncoding("UTF-8");  

            PrintWriter out =response.getWriter(); */ 

              

            //直接输出响应的内容  

     /*      out.println(json.toString());  

            out.flush();  

            out.close(); */ 

               

        } catch (Exception e) {  

            // TODO: handle exception  

            e.printStackTrace();  

        }  

        return null;

          

 

 

前台代码:

 

//jqueryjson

            $(document).ready(function(){

                    

                         alert("jiazai");

                 $("input[name='button']").click(function(){

                         var barcode=$('#barcode').val();

                         alert("barcode"+barcode);

                               varurl="<%=basePath%>borrow/borrowAction!bookborrow";

                               vardata={barcode:barcode};

                               var type="json";

                               $(".tables>tbody").empty();

                           $.post(url,data,function(result){

                           result = eval(result);

                           alert("result:"+result.length);

                           $("#barcode").val(barcode);

                           alert(result.name);

                           for(var i=0;i<result.length;i++){

                                alert("result:"+result[i].bookName);

                                $("#readername").val(result[1].bookName);

                                //$('#readername').attr(result[1].bookName);

                                //$('#readername').val(result[i].bookid);

                           }

                           // var reader=eval(result);

                          // alert(reader);

                           //for(var i=0;i<result.length;i++){

                          //alert("result"+result[i].barcode);

                             //$(".tables>tbody").append("<tr><td>"+result[i].stuId+"</td><td>"+result[i].stuName+"</td><td>"+result[i].classname+"</td></tr>");

                            

                           //}

                           },type);

                 });

     

});


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值