JSON.parse()【从一个字符串中解析出json对象】
JSON.stringify()【从一个对象中解析出字符串】
做项目的登陆功能时,用到了h5的sessionstorage方法,将登陆后返回的信息想存到了浏览器中。但返回信息是一对象,所以需要使用
JSON.stringify方法将对象转换成字符串,然后进行存储。如以下代码
//点击登陆 function fun_login(_type) { //检查录入项目: var err = checkLogin(); if(err) { alert(err); return; } var formData = { "loginType": _type, "loginName": $(".login-right input[name='loginname']").val(), "password": $(".login-right input[name='password']").val() }; $.ajax({ type: 'post', url: "../spirit/login", data: formData, dataType: 'json', success: function(data) { console.log(data); if(data.returnCode == "00") { isLogin = "1"; var memberObjStr = JSON.stringify(data.memberInfo); sessionStorage.setItem("memberInfo", memberObjStr); sessionStorage.setItem("pwd", $(".login-right input[name='password']").val()); $("#signBox").html(""); $("#signModal").modal("hide"); fillMemberMes(memberObjStr); } else { alert("登录失败:" + data.messageInfo); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { //失败回调函数 var m = "系统错误: statu=" + XMLHttpRequest.status + " readyState=" + XMLHttpRequest.readyState + " text=" + textStatus + " errThrown=" + errorThrown; alert(m); } });
登陆以后刷新时,判断浏览器存储的信息在不在,如果有,则把个人信息放到网站顶部;如果没有,则提醒登陆。这时填充信息的时候还得用对象来填充,所以用JSON.parse的方法将字符串转换为对象再进行操作;
//加载信息 $(document).ready(function(e) { var memberObjStr = sessionStorage.getItem("memberInfo"); if(memberObjStr) fillMemberMes(memberObjStr); });
//登陆后填充头部信息
function fillMemberMes(data) {
var data = JSON.parse(data);
console.log(data);
if(data) {
if(data.memberClass == '1') data.memberType = "个人会员";
else {
if(data.memberType == '1') data.memberType = "供应商会员";
else
if(data.memberType == '2') data.memberType = "采购单位会员";
else
data.memberType = "未知类型会员";
}
var str = '<span class="headImg"><img src="../userfiles/temp/defaultPerLogo001.png" style="25px;height:25px;margin-top:-5px;margin-right:5px;">' + data.userName + '</span>' +
'<span>' + '(' + data.memberType + ')' + '</span>' +
'<a onclick="toadmin()" style="color:#fc771f;padding-left:15px;cursor:pointer;">登录管理端</a>';
$("#signBox").html(str);
};
}