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

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

原文地址:https://www.cnblogs.com/jpfss/p/9100937.html