25-第二十五章 脚本化HTTP Ajax

25-第二十五章 脚本化HTTP Ajax
一、 Ajax概述
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。功能:在不刷新页面的情况下,实现与后台的数据交互

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
Ajax技术核心是XMLHttpRequest对象(简称XHR)

1 运行在服务器
2 不能跨域
3
二、XMLHttpRequest 对象方法
一 、创建XMLHttpRequest 对象
创建 new XMLHttpRequest()

ie 6以下版本new ActiveXObject('Msxml2.XMLHttp.3.0') 或 new ActiveXObject('Msxml2.XMLHTTP.6.0')

1.new XMLHttpRequest() || new ActiveXObject('Msxml2.XMLHTTP.3.0')||new ActiveXObject('Msxml2.XMLHTTP.6.0');
二 、Open(``method,url,asynch,[username],[password])
指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;
Method: http请求方法,一般使用”GET“,”POST“.
url: 请求的服务器的地址;
asynch: 是否采用异步方法,true为异步,false为同步;
后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

GET
GET请求是最常见的请求类型,最常用于向服务器查询某些信息。必要时,可以将查询字符串参数追加到URL的末尾,以便提交给服务器。
1.xhr.open('get', 'demo.php?rand=' + Math.random() + '&name=Koo', true);
注意: 特殊字符(eg:&等),传参产生的问题可以使用encodeURIComponent()进行编码处理,中文字符的返回及传参,可以将页面保存和设置为utf-8格式即可。或者使用提交url通用方法。

POST
POST请求可以包含非常多的数据,我们在使用表单提交的时候,很多就是使用的POST传输方式。
xhr.open(‘post’, ‘demo.php’, true);
而发送POST请求的数据,不会跟在URL的尾巴上,而是通过send()方法向服务器提交数据。
xhr.send(‘name=Lee&age=100’);
一般来说,向服务器发送POST请求由于解析机制的原因,需要进行特别的处理。因为POST请求和Web表单提交是不同的,需要使用XHR来模仿表单提交。
1.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
三 、SetRequestHeader(String header,String Value)如果是POST方式,需要设置请求头
设置HTTP请求中的指定头部header的值为value.
此方法需在open方法以后调用,一般在post方式中使用。

1.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
四、 send(data)
向服务器发出请求,如果采用异步方式,该方法会立即返回。
content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

五、 Abort()
停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。

三、XMLHttpRequest对象属性
一、 onreadystatechange
请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。

二、 readyState
表示XMLHttpRequest对象的状态:
0:未初始化。对象已创建,未调用open;
1:open方法成功调用,但Send方法未调用;
2:send方法已经调用,尚未开始接受数据;
3:正在接受数据。Http响应头信息已经接受,但尚未接收完成;
4:完成,即响应数据接受完成。

三、 responseText | responseXML
responseText 服务器响应的文本内容
responseXML 服务器响应的XML内容对应的DOM对象

四、 Status
服务器返回的http状态码。
200表示“成功”,
404表示“未找到”,
500表示“服务器内部错误”等。

a.通过xhr.getResponseHeader(“Content-Type”);可以获取单个响应头信息
b.getAllResponseHeaders();获取整个响应头信息

1.alert(xhr.getAllResponseHeaders());

你可能感兴趣的:(25-第二十五章 脚本化HTTP Ajax)