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

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

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/jpfss/p/9100937.html
Copyright © 2011-2022 走看看