学生:请教
我在servlet中传回这有一段数据:
out.print("{uname:"+users.getUname()+",pwd:"+users.getPwd()+",email:"+users.getEmail()+",rename:"+users.getRealityName()+",phone:"+users.getPhone()+",remark:"+users.getRemark()+"}");
在页面接收到数据后,我这样处理
回调函数中
[color=darkblue]function/color{
[color=darkblue]var[/color] dataobj=data;
请问我要如何才能分别取到传回的uname,pwd,email等属性的值啊?([i][color=indigo][b]最好能说说原理,谢谢[/b][/color][/i])
}
JSON-lib首页上有一段话:
Json-lib requires (at least) the following dependencies in your classpath:
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.4
你必须把上面的这些jar包都加入才可以。
如果用$.getJSON()的话,你的JSON封装的不对,需要返回{"uname":"uname_value","pwd":"pwd_value"}这样的形式,然后直接data.xxx就可以得到
如果用$.getJSON()
你的回调函数的data已经转成js对象了,直接data.uname就行了,
如果用的$.ajax();需要配置dataType为json,如:
$.ajax({
type: "GET",
url: "test.jsp",
dataType: "json",
success:function(data){ }
});
你用$.ajax({dataType:'json'....})也可以直接在回调里面data.xxx得到.
关于原理,就是使用JavaScript里的eval函数
你传回的是个字符串,在页面上得到的就是这个字符串,要想解析它只能自己写正则。
同意楼上的说法,索性在后台把它拼接成JSON格式的字符串,然后在前台转换方便许多。
写个简单例子参考:
[code="js"]
$("#submitButton").click(function(){
$.get("myservlet/getdata",//servlet URL
{username:$( "#username").val()},//表单中的值
function(data,statusText){//相应函数
var jsonvars=data.mydata;//返回JSON数据
for(var i=0;i { $("#dataDiv").append"
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
JSONObject member = null;
for (int i = 0; i < 5; i++)
{
member = new JSONObject();
member.put("name", "xiaohua");
member.put("age", 15);
array.add(member);
}
json.put("mydata", array);
PrintWriter pw = response.getWriter();
pw.print(json.toString());
pw.close();
}
}
[/code]
你照这个改一下就可以了。
不客气,分给我就行了 :D
需要json-lib-2.3-jdk15.jar包。