java json类型的String在js中接受直接称json了?

struts2

class person{
String name;
String age;
....set get
}

/////////////
action
public String op (){
private String orgTree;
....set get....

person ps = new person();
ps.setname="dd";
ps.setage ="12";

JSONObject json = JSONObject.fromObject(ps);
orgTree = json.toString();
return "initsuccess"
}
/////////////
js

function getinfo (){
var pers = <%=request.getAttribute("orgTree")%>;
window.alert(pers.name);

}
结果:dd

// 得到的 pers 怎么就是 json了 不是String了?

2个回答

<%=request.getAttribute("orgTree")%> 是在服务器端输出字符串的,传输到浏览器后就没有双引号了,你右击查看下 变成了json字面量

j_sun150
j_sun150 哦,好像懂了一点……xiexie
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian ajax传回去是一个字符串 因为它是通过responseText得到的 所以需要eval下
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 没什么原理 其实就是字符串输出嘛 就像往控制台打印一样
6 年多之前 回复
j_sun150
j_sun150 哦,你指的是name,age的双引号都在传到浏览器后没有了。 那这个是什么原理,Strut是怎么确定哪些引号需要被去掉,不麻烦的话能简单讲下原理吗? 还有如果我用ajax 回传 同样的String ,好像需要用eval()转换才行,不能自动去双引号了? 基础不好,麻烦了。
6 年多之前 回复

(1)直接用request.getAttribute()的结果:
var str={name:'ok',age:'21'}
直接是定义js中的json对象的语法了;
(2)ajax调用后返回的json串,已经是js中的字符串了(这个应该决定于ajax请求响应机制,也有一些框架提供返回json类型的),所以要转换为json对像就使用eval了

j_sun150
j_sun150 恩 知道了 多谢
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!