1.AJAX
[1] AJAX简介
> 全称:Asynchronous JavaScript And XML
> 直译:异步的JavaScript和XML
> AJAX就是通过JS向服务器发送请求,接收响应,并通过DOM来修改网页。
> XML是服务器返回的数据的格式,但是现在xml格式的数据使用的不多了
[2] 同步和异步
- 同步请求:
- 通过浏览器向服务器发送请求时,整个的页面都处在一个等待的状态,不能做其他操作,
等待服务器的响应到达浏览器时,它会刷新整个网页。
- 异步请求:
- 发送请求时,通过js在后台自动发送的,不会影响用户浏览操作网页的行为,
当响应返回时,只会刷新网页中的一部分,而不是整个网页。
[3] XMLHttpRequest对象
> JS中为我们提供了一个XMLHttpRequest对象,它封装了浏览器发送给服务器的请求报文,
同时我们也可以使用该对象来接收服务器发送的响应信息。
> 我JS中AJAX操作都是围绕着XMLHttpRequest进行的。
[4] 使用步骤
1.创建XMLHttpRequest对象
> 大部分浏览器都支持的方式
var xhr = new XMLHttpRequest();
> IE6以下的浏览器
var xhr = new ActiveXObject("Msxml2.XMLHTTP");
> IE5.5以下的浏览器
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
>
//获取XMLHttpRequest对象的方法
function getXMLHttpRequest(){
try{
//大部分浏览器都支持的方式
return new XMLHttpRequest();
}catch(e){
try{
//IE6以下浏览器支持的方式
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//IE5.5以下支持的方式
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("哥们,你是外星来的吧!你的浏览器不支持AJAX");
}
}
}
}
2.设置请求信息
xhr.open("请求方式","请求地址");
注意:在发送post请求时,还需要设置一个请求头:
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
3.发送请求
xhr.send(请求体);
4.接收响应信息
xhr.onreadystatechange = function(){
//判断readyState是否为4,status是否为200
if(xhr.reqdyState==4 && xhr.status==200){
//获取响应信息
var text = xhr.responseText;
var dom = xhr.responseXML;
}
};
[5] 响应数据的格式
> 最早的时候我们的AJAX一直使用XML作为响应数据的格式。
> 当我们需要向请求返回一个复杂的数据,比如说一个学生对象。
name=老王,age=18,gender=男,address=隔壁
> 一般复杂数据我们可以考虑使用XML来表示
<person>
<name>老王</name>
<age>18</age>
<gender>男</gender>
<address>隔壁</address>
</person>
> 使用XML去传输数据,XML的传输性能略差,解析起来比较麻烦
所以现在在AJAX的开发中已经很少使用XML作为响应数据的格式。
> 当我们发送复杂数据时,一般我们会采用JSON。比如同样的数据,使用json可以这样表示:
{"name":"老王","age":18,"gender":"男","address":"隔壁"}
2.JSON
[1] JSON简介
> JSON全称 JavaScript Object Notation
> JSON和XML类似,都是一种表示数据的格式
> JSON和XML相比,占用的空间小,传输性能好
解析起来也是十分方便。
> JSON实际上就是一个字符串,但是这个字符串可以转换为对象。
> 使用JSON比XML性能要高很多。
> JSON传输性能好,可读性比较差
XML传输性能不好,可读性好
> 所以我们一般使用JSON传输信息,而使用XML来编写配置文件。
[2] JSON的格式
> JSON的语法:
- JSON对象
{
"属性名1":属性值1,
"属性名2":属性值2,
"属性名3":属性值3
}
- JSON对象中保存的是一组一组的键值对结构,
属性名和属性值使用冒号连接,
属性名必须加上双引号,
多个键值对之间使用,隔开
如果属性后边没有其他属性,千万不要再加,!
- JSON数组
[属性1,属性2,属性3]
> JSON属性值可以使用的类型:
1.字符串
2.数字
3.布尔
4.null
5.对象
6.数组
[3] JSON的转换
1.在JS中JSON的转换:
1) json字符串 --> js对象
var obj = JSON.parse(json);
2) js对象 ---> json字符串
var json = JSON.stringify(obj);
2.在Java中JSON的转换:
1) json-lib 使用麻烦,性能差
2) jackson 使用简单,性能最好
3) gson 使用最简单,性能好
- gson是谷歌出品的一款JSON的解析工具。
- 使用gson,需要先导入一个jar包:
gson-2.2.4.jar
- 使用:
Gson gson = new Gson();
- 方法:
String json = gson.toJson(对象);
Object obj = gson.fromJson(JSON字符串,对象类型);
3.通过jQuery实现AJAX
[1] post()方法
> post(url, [data], [callback], [type])
- url:发送请求的地址
- data:请求参数,需要一个js对象
- callback:回调函数,当响应返回时,该回调函数会执行,
并且将响应内容以参数的形式返回
- type:指定响应内容的类型,xml, html, script, json, text
[2] get()方法
> get(url, [data], [callback], [type])
- url:发送请求的地址
- data:请求参数,需要一个js对象
- callback:回调函数,当响应返回时,该回调函数会执行,
并且将响应内容以参数的形式返回
- type:指定响应内容的类型,xml, html, script, json, text
[3] getJSON()方法
> getJSON作用和get类似,只不过他的type默认就是json,不用再指定了。
转载请注明出处!
http://www.cnblogs.com/libingbin/
感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。
- 记一次在.NET成长之路上的下午茶
在2017年2月25日我和李海国有幸与阳铭.朱永光两位大哥喝了一次下午茶.熟悉ABP框架的朋友呢知道阳铭远在上海,所以个人很是珍惜这次机会.朱永光大哥是微软MVP,之前是启路科技的CTO,目前在微软. ...
- 瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)
简介 Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template M ...
- 新蒂下午茶体基本版SentyTEA-Basic
一.目前的最新版新蒂下午茶体包含了7600+常用汉字,每个字都是手写而成,是一套充满手写感的中文字体,轻松.惬意,如同慢饮一杯下午茶.SentyTEA-Basic.ttf 这个一个新蒂下午茶体基本版 ...
- CTO俱乐部下午茶:技术团队管理中的那些事儿
摘要:"CTO下午茶"是一种有效的集体对话的模式,参加活动的成员在真诚互动和共同学习的宗旨下齐聚一堂,在喝茶聊天氛围下交流工作心得.本期"CTO下午茶"的主题是 ...
- 6月27日CTO俱乐部下午茶印象
作者:朱金灿 来源:http://blog.csdn.net/clever101 感谢CSDN的邀请,有幸参加了6月27日“CTO俱乐部下午茶时光:CTO在团队管理中所遇到的那些事”活动.本期的主讲嘉 ...
- HTTP协议(下午茶)
http://www.kancloud.cn/kancloud/tealeaf-http/43840 下午茶
- 【java下午茶】12306的双人票
明天下午就要和客户谈需求了,今天还在列车上假象着明天的情景,由于这是一个旅游的项目,所以想尽可能设计得人性化一些. 不过有件很不爽的事情就是和老公的位子是分开的,虽然我们订的是连坐号.就这个问题也是我 ...
- 【java下午茶系列】java三重奏之封装
java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...
- 洛谷 P2978 [USACO10JAN]下午茶时间Tea Time
P2978 [USACO10JAN]下午茶时间Tea Time 题目描述 N (1 <= N <= 1000) cows, conveniently numbered 1..N all a ...
随机推荐
- 让Windows2008R2也能进入手柄设置(游戏控制器设置)
在Windows2008 R2系统中,插入XB360手柄后能自动完成驱动安装,在[设备和打印机]中也会出现手柄,但在上面右键→游戏控制器设置却没反应,什么都没打开,虽然不影响实际游戏,但总感觉有点堵. ...
- Wojilu学习笔记 (02)
使用RequireJS (1)整个页面,应该只有一个 <script src="" > 标签,并且放在页面底部,用来引入 RequireJS 和 main.js 文件 ...
- GitHub简单教程
Hello World程序是计算机编程中由来已久的惯例,这是一个当你在学习新事物的时候开始的一个简单的小练习.让我们开始GitHub的"Hello World". 你将学会: - ...
- c#获取当前应用程序所在路径
一.获取当前文件的路径1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径,包括文 ...
- 第二讲:WCF介绍(2)
代码 https://yunpan.cn/cPns5DkGnRGNs 密码:3913 在上一讲中我们说到 在代码 当中 完成了 服务的寄宿. 这里我们说下 在实际的开发 当中 我们一般不会去 ...
- hibernate---注释 ----(购物:人顾客售货员boss)
package com.ij34.dao; import javax.persistence.*; @Entity @Inheritance(strategy=InheritanceType.JOIN ...
- [转]以Facebook为案例剖析科技公司应有的工具文化
原文:http://36kr.com/p/146507.html 这是一篇几年前的文章,但对于没有涉及到工具文化这个概念的人来说,还是很新的. 前言 前段时间和大众点评的 CEO 张涛聊天的时候碰到内 ...
- PostgreSQL获取年月日
1.获取当前日期的年份 select to_char(t.detect_date,'YYYY') select extract(year from now())为double precision 格式 ...
- python 学习笔记9(面向对象)
面向过程.函数式.面向对象 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象(Object Oriented Programmin ...
- Android总结篇系列:Android Intent
Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...