一、基本用法(发送请求、接收返回值);
1、js代码
$.ajax( {
type :"POST",url :"/text.action?name="+name+"&user.id="+id,//后面name/id为变量
dataType :"json",async :false,
success : function(result) {
alert("result"+result);
}
});
或者将url和参数分开写:
url:"text.action",
type:"post",
data:{"user.id":id,"name":name},
2、action配置
extends="json-default"//pakage的继承属性
<action name="test" class="societyPPSAction" method="test">
<result type="json">
<param name="root">result</param>
</result>
</action>
3、action中代码
private String result;
public String test() {
......
......
this.result="succ"; //可给result赋值json串
return SUCCESS;
}
相关定义:
JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
二、json数据封装
1、action中封装json格式的对象数组(转为字符串传输)
List<Prize> list=prizeService.ajaxQueryList(prizes);
JSONArray jArray=new JSONArray();
if (list!=null&&list.size()>0) {
for(Prize all:list){
JSONObject object=new JSONObject();
object.put("id",all.getId());
object.put("name",all.getName());
object.put("price",all.getPrice());
jArray.add(object);
}
result=jArray.toString();
}
2、action中封装json格式的对象(含对象数组)
JSONObject prizeJson=new JSONObject();
prizeJson.put("allRow",pageBean.getAllRow());
List<Prize> list=prizeService.ajaxQueryList(prizes);
JSONArray jArray=new JSONArray();
if (list!=null&&list.size()>0) {
for(Prize all:list){
JSONObject object=new JSONObject();
object.put("id",all.getPrice());
jArray.add(object);
}
prizeJson.put("prizeArray",jArray);
result=prizeJson.toString();
}
三、json数据解析
1、js中解析json格式的对象数组的字符串
success : function(result) {
var jsonArray=eval("("+result+")");//随意定义一个变量接收解析后的json数组
for(var i=0;i<jsonArray.length;i++){
alert(result[i].id);
alert(result[i].name);
}
}
方法说明:eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成JavaScript对象。必须把文本包围在括号中,这样才能避免语法错误。
2、js中解析json格式的对象(含对象数组)的字符串
success : function(result) {
var json=eval("("+result+")");//随意定义一个变量接收解析后的json对象
alert(json.allRow);
for(var i=0;i<json.prizeArray.length;i++){
alert(json.prizeArray[i].id);
alert(json.prizeArray[i].name);
}
}