ajax
2016-09-04 16:04
218 查看
Ajax:asynchronous javascript and xml,是可以与服务器进行(异步/同步)交互的技术之一
最大特点:页面不刷新
(一)ajax是xhtml css javascript xml XMLHttpRequest对象(ajax对象)其中XMLHttpRequest是ajax的官方名称
(二)使用ajax:
1.创建ajax对象
1.1 主流(火狐 谷歌)等浏览器,包括IE7以上版本的浏览器
方式:
1.2 IE(6/7/8)版本
方式:
1.3 区别浏览器
2.发送对服务器的请求
3.接收服务器返回的信息
3.1 浏览器可以接受的信息ajax都可以接受
3.2 ajax(XMLHttpRequest)对象的成员:
属性:
responseText 以字符串的形式接收服务器端返回的信息
readyState 表示ajax的状态值
onreadystatechange 事件,该事件可以感知ajax状态的变化
方法:
abort 取消当前请求
getAllResponseHeaders 获取响应的所有Http头
getResponseHeader 从响应信息中获取指定的Http头
open 创建一个新的http请求,并指定请求的方法和url
send 发送请求到http服务器并接收回应
setRequestHeader 单独指定请求的某个http头
3.3 ajax的五种状态(readyState)
0: 创建ajax对象完毕,但未调用open方法
1: 请求已经创建,但未调用send方法
2: 请求已经发送完成
3: 服务器的数据返回了一部分
4: 服务器的数据返回完毕,并且连接已关闭
4.get/post方式的ajax请求:
4.1 get和post的主要区别:
一.get方式给服务器传递的数据量有大小限制,在2k左右,post方式传送的数据量没有大小限制,但是在php.ini中默认上限是8M
二.post传送数据更安全
三.传送数据的方式不一样,get方式在url后以请求字符串形式传递参数,post方式是把数据以xml形式传递给服务器
4.2 ajax的get请求:
一.在url地址后以请求字符串形式处理数据,比如:
二. 对 中文 = &等特殊字符进行处理:
在php中可以用函数urlencode()/urldecode()对特殊符号进行编码和反编码处理
在javascript中使用encodeURIComponent()对特殊符号进行编码
4.3 ajax的post请求:
一.给服务器传递数据需要调用send(请求字符串数据)
二.post模仿form表单把数据传递给服务器(设置表头)
5.同步/异步
异步:同一时间点允许执行多个进程 true(open方法中默认是true)
同步:同一时间点只允许执行一个进程 false
举例说明:当html页面中有图片进行加载时,如果ajax是异步请求,那么浏览器可以一边执行ajax一边加载图片;如果是同步请求,浏览器就必须先执行ajax之后再接着加载图片
最大特点:页面不刷新
(一)ajax是xhtml css javascript xml XMLHttpRequest对象(ajax对象)其中XMLHttpRequest是ajax的官方名称
(二)使用ajax:
1.创建ajax对象
1.1 主流(火狐 谷歌)等浏览器,包括IE7以上版本的浏览器
方式:
var xhr=new XMLHttpRequest;
1.2 IE(6/7/8)版本
方式:
var xhr=new ActiveXObject("Msxml2.XMLHTTP.6.0");
1.3 区别浏览器
if(typeof XMLHttpRequest != 'undefined') var xhr = new XMLHttpRequest; else var xhr = new ActiveXObject('Msxml2.XMLHTTP6.0');
2.发送对服务器的请求
//创建一个新的http请求 xhr.open(请求方式get/post,请求地址(url),异步/同步(true/false)); //发送请求 xhr.send(post请求输入要传递的数据/get请求设置null);
3.接收服务器返回的信息
3.1 浏览器可以接受的信息ajax都可以接受
3.2 ajax(XMLHttpRequest)对象的成员:
属性:
responseText 以字符串的形式接收服务器端返回的信息
readyState 表示ajax的状态值
onreadystatechange 事件,该事件可以感知ajax状态的变化
方法:
abort 取消当前请求
getAllResponseHeaders 获取响应的所有Http头
getResponseHeader 从响应信息中获取指定的Http头
open 创建一个新的http请求,并指定请求的方法和url
send 发送请求到http服务器并接收回应
setRequestHeader 单独指定请求的某个http头
3.3 ajax的五种状态(readyState)
0: 创建ajax对象完毕,但未调用open方法
1: 请求已经创建,但未调用send方法
2: 请求已经发送完成
3: 服务器的数据返回了一部分
4: 服务器的数据返回完毕,并且连接已关闭
4.get/post方式的ajax请求:
4.1 get和post的主要区别:
一.get方式给服务器传递的数据量有大小限制,在2k左右,post方式传送的数据量没有大小限制,但是在php.ini中默认上限是8M
二.post传送数据更安全
三.传送数据的方式不一样,get方式在url后以请求字符串形式传递参数,post方式是把数据以xml形式传递给服务器
4.2 ajax的get请求:
一.在url地址后以请求字符串形式处理数据,比如:
xhr.open('get','test.php?action=login');
二. 对 中文 = &等特殊字符进行处理:
在php中可以用函数urlencode()/urldecode()对特殊符号进行编码和反编码处理
在javascript中使用encodeURIComponent()对特殊符号进行编码
4.3 ajax的post请求:
一.给服务器传递数据需要调用send(请求字符串数据)
二.post模仿form表单把数据传递给服务器(设置表头)
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');//写在open之后,send之前
5.同步/异步
异步:同一时间点允许执行多个进程 true(open方法中默认是true)
同步:同一时间点只允许执行一个进程 false
举例说明:当html页面中有图片进行加载时,如果ajax是异步请求,那么浏览器可以一边执行ajax一边加载图片;如果是同步请求,浏览器就必须先执行ajax之后再接着加载图片
相关文章推荐
- 树--二叉树的数组实现
- Shell 系列之 declare 与 typeset
- HDU 5552 (CDQ分治 NTT)
- Android工具类--SharedPreferences储存类
- DispatchAction 分派action与Dynimic form 动态表单
- 嵌入式开发环境搭建----win10+VMware RHEL6 +mini2440
- poj 1426 Find The Multiple (bfs / dfs)
- 用GDB调试程序(四)
- 用GDB调试程序(三)
- mysql -- 通过linux shell 脚本,导出部分数据
- meta标签的应用
- 不同浏览器内核
- Java7源码浅析——对HashMap的理解
- Hibernate延迟加载
- 用GDB调试程序(六)
- VS2015使用小技巧 使用ctrl+r,ctrl+e快捷键为字段快速生成属性
- android高级界面
- 嵌入式调试器原理和各类调试器集锦
- 用GDB调试程序(七)
- Github 上怎样把新 commits 使用在自己的 fork 上?