JSON

来源:互联网 发布:js数组取最后一个 编辑:程序博客网 时间:2024/06/04 17:57

这里分析后台传user对象到页面,页面在js里面使用EL取值。

【1】后台返回user的json对象,页面直接取值

request.setAttribute("loginUser",JSON.toJSON(loginUser));//放入json对象var loginUser = ${loginUser};页面使用EL取值获取为json对象,即 typeof loginUser == object。-- 以下效果相同request.setAttribute("loginUser",JSON.toJSONString(loginUser));

【2】后台返回user的json对象,页面用双引号包括取值

request.setAttribute("loginUser",JSON.toJSON(loginUser));//放入json对象var loginUser = "${loginUser}";//注意,使用了双引号包括页面使用EL取值,出错!!!因为json内部使用的是双引号!!!Uncaught SyntaxError: Unexpected identifier

页面使用EL取值,出错!!!因为json内部使用的是双引号!!!


【3】后台返回user的json对象,页面用单引号包括取值

request.setAttribute("loginUser",JSON.toJSONString(loginUser));//放入json对象var loginUser = '${loginUser}';//注意,使用了单引号包括页面使用EL取值,获取的为json-string需要解析为json-objectif (typeof loginUser != 'object' && loginUser != '' ) {    loginUser = eval("("+loginUser+")");    alert(loginUser.userCode+','+1);}else if(loginUser != null && loginUser!= ''){    alert(typeof loginUser +','+ loginUser.userCode+','+2);}

即使后台传参为null,页面也只是会拿到一个 ''不会抛异常。


【4】后台返回null对象,页面直接取值

request.setAttribute("loginUser",null);//放入nullvar loginUser = ${loginUser};页面报错!!!

所以了,警惕属性值为空的情况,最好用第三种方式。


【5】后台返回user对象,页面直接取值

request.setAttribute("loginUser",loginUser);//放入user对象var loginUser = ${loginUser};页面报错!!!可能会提示Unexpected token :或Unexpected token ;但是可以在html中直接取值,如下:<input id="userCode" name="userCode" value="${loginUser.userCode}" type="text"/>

综上,如果需要在js中获取域对象属性值,推荐使用第三种方式!!!

即,后台返回jsonString,页面js用EL取值并用单引号包裹。如果是在html中使用,可直接返回user对象,页面直接用EL取值。

原创粉丝点击