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

如有不對,還請各位大牛指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM