Ajax和JSON

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值