Ajax和JSON
Ajax
什么是Ajax
Ajax (Asynchronous JavaScript and Xml)是一种能够发送异步请求的技术,技术核心对象XMLHttpRequest
原理
浏览器加载完页面后,可以在不销毁当前页面的前提下,支持分出一部分资源从远程获取数据,并通过脚本语言返回的数据追加到原有页面中。
Ajax实现步骤
1.创建xhr对象
var xhr = null;
if(XMLHttpRequest){
xhr = new XMLHttpRequest();
} esle {
xhr = ActiveXObject('Microsoft.XMLHttp');
}
2.open方法创建请求
//Get请求
xhr.open('get','url?name=value',true)
//Post请求
xhr.open('post','url',true);
3.设置回调事件
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
};
4.send方法发送请求
//Get请求
xhr.send(null);
//Post请求
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
xhr.send('name=value');
顺序1 -> 3 -> 2 -> 4 可以更好的兼容浏览器
当发送get send时,最好是在send()中加上null,达到兼容浏览器的作用
Get传中文(慎用),修改conf文件夹下servlet.xml文件夹中conector节点添加URIEncoding=”UTF-8”属性即可。
JSON
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。
一种与具体的开发语言,平台无关的表达数据传输的语法格式。
作用:用于规范不同平台或客户端与服务器端数据往来的格式。
语法格式
{ 属性名:属性值,属性名:属性值 … }
可以使用 { } [ ] : , “” 字符。以{开始时,是在用JSON描述一个对象,以[开始时是在用JSON描述一个数组。虽然JavaScript也用这两种符合来表达对象和数组。
1.属性值可以是 string,number,boolean(true,false),null,object。
**2.属性名必须使用双引号引起来,属性值如果是字符串,必须使用双引号括起来。
但是在JavaScript语言中,对象就没有这么严格的规定,属性可以不引,或单引,或双引。属性值可以单引可以双引。**
3.虽然JSON是网络中传输的“字符串”的格式,但是符合JSON格式的字符串到客户端或服务器端时,客户端或服务器端针对这段符合JSON格式的字符串进行操作,所以都应该完成从JSON字符串到具体语言对象的转换。
如果当前JSON字符串到达的是服务器,那么就要完成从JSON到Java对象的转换。
如果当前JSON字符串到达的是客户端,那么就要完成从JSON到JavaScript对象的转换。
JavaScript对象与符合JSON格式的字符串的转换
使用浏览器内原生的JSON对象的stringify()方法和parse()方法
stringify():将JavaScript对象 -> JSON字符串
var obj = {name:"Luffly",age:17};
var str = JSON.stringify(obj);
parse():将JSON字符串 -> JavaScript对象
var str = '{"name":"Luffy","age":17}';
var obj = JSON.parse(str);
json.js
将JavaScript对象 -> JSON字符串
var obj = {name:"Luffy",age:17};
var str = obj.toJSONString();
将JSON字符串 -> JavaScript对象
var str = '{"name":"Lufy","age":17}';
var obj = str.parseJSON();
Java对象与符合JSON格式的字符串的转换
将Java对象 -> JSON字符串
Friend f = new Friend("Luffy",17);
JSONObject obj = JSONObject.fromObject(f);
String str = obj.toString();
将JSON字符串 -> Java对象
String str = "{\"age\":17,\"name\":\"Luffy\"}";
JSONObject obj = JSONObject.fromObject(str);
Friend f = (Friend) obj.toBean(obj,Friend.class);
将Java对象数组 -> JSON字符串
List<Friend> fs = new ArrayList<Friend>();
fs.add(new Friend("Luffy", 17));
fs.add(new Friend("Tom", 20));
JSONArray obj = JSONArray.fromObject(fs);
String str = obj.toString();
将JSON字符串 -> Java对象数组
String str = "[{\"age\":17,\"name\":\"Luffy\"},{\"age\":20,\"name\":\"Tom\"}]";
JSONArray obj = JSONArray.fromObject(str);
List<Friend> fs = (List<Friend>) obj.toCollection(obj,Friend.class);