前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端接收的json对象取值问题

前端接收的json对象取值问题

作者头像
微醺
发布2019-01-17 13:14:41
2.7K0
发布2019-01-17 13:14:41
举报
文章被收录于专栏:有脑子的搬砖工

后端给前端发送信息的格式

前端只能接收json对象类型的数据,使用之前先导入阿里巴巴的json的jar包。名字如下图所示,去白百度下载会即可。

在这里插入图片描述
在这里插入图片描述

阿里巴巴的jar包能把所有类型的数据转换成json对象,但是前端如果想要显示数据,只能接收数组类型的数据。这里我们把数据放在hashmap中,以键值对的形式存储数据。然后把hashmap放在arraylist中,下面是我判断登录的信息的代码。

代码语言:javascript
复制
   String msg ="验证码不正确";
        String c ="";
        //处理数据
        ArrayList<HashMap<String,String>> list = new ArrayList();
        HashMap<String,String> map = new HashMap();
        //查询数据库里面的数据跟前端发送过来的数据是否相同
        User us= new UserImp().queryUser(username);
        //System.out.println(us);
        //登录不成功
        if(us==null){
            c="1002";
             msg="账号不存在";
        }
        if(us!=null){
            if(!us.getPassWord().equals(password)){
                c="1003";
                msg="密码不正确";
            }
        }
        HttpSession session = request.getSession(true);
        String vacode = (String) session.getAttribute("vacode");
        if(vacode.equalsIgnoreCase(code)){
            //跳到主页
            session.setAttribute("User",us);
            c="1001";
        }
        map.put(c,msg);
         list.add(map);
        return JSON.toJSONString(list);
    }

这样后端就把信息发送给了钱端。

前端接收数据

前端接收的数据,打印出来是这样的类型,[{},{}].当然,我这里的代码返回去显示的样式是[{}]的,因为我只会返回一个数据。 这里[]代表数组,里面的一个{}代表一个对象。如果用js接收,我们需要先解析json对象。

代码语言:javascript
复制
function onLogin() {
	var span = document.getElementsByClassName("msg")[0];
	var username = document.getElementsByClassName("username")[0].value;
	var password = document.getElementsByClassName("password")[0].value;
	var passcode = document.getElementsByClassName("code")[0].value;
	//console.log(username+" "+password);
	//2.请求
	//创建一个xmlhttprequest对象
	var req = new XMLHttpRequest();
	//设置请求方法 主机地址,是否异步
	req.open("get","login.do?username="+username+"&password="+password+"&passcode="+passcode,true);
	req.send();
	//发送请求
	//req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
	//3.监听状态
	req.onreadystatechange = function() {
		//console.log(req.readyState + " " + req.status);
		if (req.readyState == 4 && req.status == 200) {
			//响应成功
			//console.log(req.responseText); //服务器响应回来的string数据
			//将接收json字符创转成Json对象(只能转数组[])
			var data = req.responseText;
			//console.log(data);
			var obj = eval(data);
			//前端页面跳转到登录页面
				//span.innerHTML=data;
				//console.log(obj[0].code);	
				//console.log(obj[0].msg);
			if(obj[0].code!=1000){
				alert(obj[0].msg);
				return;
}	
				window.location.href = "index.html";
			}
		}
	}

这里eval(data)把它解析成obj对象。obj对象是数组里面加上一个对象,所以取出数组里面的第一个对象,使用对象.属性名取出它们的数据。

使用jquary取出数据
代码语言:javascript
复制
function onLogin() {
    //console.log( $(".username").val());
    $.post("login.do",{"username": $(".username").val(),"password":$(".password").val(),"code":$(".code").val()},function (data){
       for (var key in data[0]){
           if(key=="1001"){
               window.location.href = "index.html";
           }else {
               //alert(data[0][key]);
               $("#msg").html(data[0][key]);
           }
       }
    },"json");

可以使用for in 遍历数组,data[0]是数组里面的第一个对象。取出对象里面的所有key,通过key获取value。 当然,这里面也可以用对象.属性名来取出数据。 比如我有多个对象,由于ArrayList是存取有序的,这样我们可以选取哪个对象,data[i].该对象的属性名,也可以取出值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 后端给前端发送信息的格式
  • 前端接收数据
    • 使用jquary取出数据
    相关产品与服务
    验证码
    腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档