zoukankan      html  css  js  c++  java
  • ajax接收json数据到js解析

    今天又学到了一点新知识,脑子记不住东西特把它记录下来!

    页面ajax请求后台时一般都是返回字符串进行判断,要是返回list或者对象时该怎么办?

    第一种:ajax接收到list并返回给前台

    js代码:

    [javascript] view plain copy
    print?
    1. function test(obj){  
    2.             var str = $("#tt").val();  
    3.             webTest(str,function(result){  
    4.                 alert(result);//将后台返回结果alert一下  
    5.                 var list = eval(result);//解析json  
    6.                 for(var i = 0;i < list.length;i++){//循环遍历数据  
    7.                     var userinfo = list[i];  
    8.                     alert(userinfo.name+"+"+userinfo.age+"+"+userinfo.sex+"+"+userinfo.address);  
    9.   
    10.                 }  
    11.             });   
    12.         }  

    后台代码:

    1. @Override  
    2.     public String test(String str) {  
    3.         List<UserInfo> list = new ArrayList<UserInfo>();  
    4.         UserInfo ui = new UserInfo();  
    5.         ui.setName("tom");  
    6.         ui.setAge(22);  
    7.         ui.setSex("男");  
    8.         ui.setAddress("陕西西安");  
    9.         list.add(ui);  
    10.         JSONObject ja = JSONObject.fromObject(list);//将list包装成json传递给前台  
    11.         return ja.toString();  
    12.     }  
     运行结果:

    第二种情况,接收对象数据返回:

    js代码:

    [javascript] view plain copy
    print?
    1. <script>  
    2.     $("div.submit_op>input").click(function(){  
    3.         var uname = $("#acount").val();  
    4.         var pass = $("#pass").val();  
    5.         if(uname==""){  
    6.             alert("请输入用户名");  
    7.         }else if(pass == ""){  
    8.             alert("请输入密码");  
    9.         }else{  
    10.             ecLogin(uname,pass,function(result){//这一步可以堪称是ajax请求后台,result是返回结果  
    11.                 if(result == "false"){  
    12.                     alert("用户名或者密码错误");  
    13.                 }else{  
    14.                     var userinfo = eval(result)[0];//当是单个对象时,虽不用循环遍历,但是需要【0】取</span>  
    15.                     alert(userinfo.user_reg_id);  
    16.                 }  
    17.             });  
    18.         }  
    19.   
    20.     })  
    21. </script>  

    [javascript] view plain copy
    print?
    1. /** 
    2.  * 登录接口 
    3.  * @param phone 手机号 
    4.  * @param pass 密码 
    5.  * @param callback func 回调函数,原型function(string) 其中参数为登录之后的用户对象或者null 
    6.  * @returns 
    7.  */  
    8. var ecLogin = function (phone, pass, callback) {  
    9.     alert(phone);  
    10.     var soapMessage = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bs="http://inter.hs.com/">'  
    11.             + '<soapenv:Header/>'  
    12.             + '<soapenv:Body>'  
    13.             + '<bs:login>'  
    14.             + '<phone>' + phone + '</phone>'  
    15.             + '<pass>' + pass + '</pass>'              
    16.             + '</bs:login>'  
    17.             + '</soapenv:Body>'  
    18.             + '</soapenv:Envelope>';  
    19.     PostData(soapMessage, callback);  
    20. }  
    后台代码:
    1. @Override  
    2. public String login(String strPhone, String password) {  
    3.     String str = "false";  
    4.     Connection conn = DBManager.getConnection();  
    5.     String sql = "select * from tb_user_login where user_phone = ? and user_pwd = ?";  
    6.     PreparedStatement ps = null;  
    7.     ResultSet rs = null;  
    8.     try {  
    9.         ps = conn.prepareStatement(sql);  
    10.         ps.setString(1, strPhone);  
    11.         ps.setString(2, password);  
    12.         rs = ps.executeQuery();  
    13.         while (rs.next()){  
    14.             UserLogin ul = new UserLogin();  
    15.             ul.setUser_reg_id(rs.getString(1));  
    16.             ul.setUser_phone(rs.getString(2));  
    17.             JSONObject ja = JSONObject.fromObject(ul);  
    18.             str = ja.toString();  
    19.         }  
    20.     } catch (SQLException e) {  
    21.         e.printStackTrace();  
    22.     }  
    23.     return str;  
    24. }  

    如有不对,还请各位大牛指正!

  • 相关阅读:
    JavaScript 数组中 length 属性【每日一段代码100】
    连续往上滚动jquery代码
    关于<img>标签的几个问题
    前端页面制作常见问题及解决方案
    JavaScript random() 方法【每日一段代码96】
    JavaScript split() 方法【每日一段代码99】
    JavaScript boolean 对象检查逻辑值【每日一段代码94】
    CSS 属性总结
    JavaScript max() 方法【每日一段代码97】
    JavaScript sort() 方法数组排序文字【每日一段代码92】
  • 原文地址:https://www.cnblogs.com/jpfss/p/9100937.html
Copyright © 2011-2022 走看看