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());
	}
	
}

相关推荐