Ajax和JSON简单应用示例
最后更新日:2014年12月25日
前端:引入JQuery
//如果用①的方式,那么url只要写为'/Test/restApply.do?method=checkRepeat'
//然后加上:
//data={username:username,worknum:worknum,restType:restType};
//jQuery.ajaxSettings.traditional = true;
$.ajax({
url : '/Test/restApply.do?method=checkRepeat&checkValue1='+checkValue1
+'&checkValue2='+checkValue2+'&worknum='+worknum,
type : 'POST',
dataType : 'json',
//data:data,//注①
//表示同步执行,不然是异步执行
async : false,
error : function() {
alert('Operate Failed!');
},
success : function(json) {
//用对象.属性的方式输出出来
alert(json.a);
}
});
后端:引入JSONObject和JSONArray
①将数据放入JSONObject或JSONArray或两者结合
②将JSONObject的数据转为JSONObject.fromObject(jo)
或将JSONArray的数据转为JSONArray.fromObject(ja)
③是JSONObject jo或JSONArray ja
response.setCharacterEncoding("utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter printWriter = response.getWriter();
printWriter.write(jo.toString());//printWriter.write(ja.toString());注:
A、如果不想用printWriter.write的方式可以写为:
①在方法上加上@ResponseBody注解
②方法返回值由void变为String
③最后将JSONObject的值toString()
B、如果不想用request.getParameter()的方式接受参数可以写为:
①前台变为
dataType:'json'
data:JSON.stringify(data)
contentType:'application/json'
②后台为
在方法的参数里多加一个注解参数:@RequestBodyStringrb
但是,有个问题中文会乱码,要处理下!!!
补充:
实体类Person
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}JSON转化为实体bean
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
/**
1.这个data可能是通过request.getParameter(data)得到的
2.这个request.getParameter(data)中的data来自页面的形式可能为:
var a = "张三";
var b = 35;
var d={name:a,age:b};
jQuery.ajaxSettings.traditional = true;
$.ajax({
url : '/xxx/xxxx?method=xxxxx',
type : 'POST',
dataType : 'json',
data:{data:JSON.stringify(d)},
async : false,
error : function() {
//TODO
},
success : function(json) {
if (json.resultFlag==false){
//TODO
}else{
//TODO
}
}
});
*/
String data = "{\"name\":\"张三\",\"age\":\"35\"}";
JSONObject jo = JSONObject.fromObject(data);
//有时你的data并不是一个实体bean对象,那么就老老实实的:
//jo.get("name");jo.get("age");
Person p = (Person)JSONObject.toBean(jo, Person.class);
System.out.println(p.getName());
System.out.println(p.getAge());
}
} 相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
时光如瑾雨微凉 2020-07-19
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05