ajax全接触--imooc

来源:互联网 发布:房子装修软件app 编辑:程序博客网 时间:2024/06/09 18:57

一、http请求

1.http是一种无状态的协议。即,服务器不会记录客户端的请求,每次都需重新建立连接。

2.一个完整的http请求通常包含以下7个步骤:

(1)建立TCP连接

(2)web浏览器向web服务器发送请求命令

(3)web浏览器向web服务器发送请求头信息

(4)web服务器向web浏览器发送应答命令

(5)web服务器向web浏览器发送应答头信息

(6)web服务器向web浏览器发送数据

(7)web服务器关闭TCP连接

3.一个http请求一般有4部分组成:

(1)http请求的方法或动作(GET还是POST)

(2)正在请求的URL(地址)

(3)请求头(包含一些客户端信息、身份验证信息等)

(4)请求体(请求的正文

4.GET和POST

GET:一般用于信息获取,使用URL传递参数,对所发信息的数量有限制(一般在2000个字符)

POST:一般用于修改服务器上的资源,对所发信息的数量无限制

附:GET是幂等的。即,一个GET请求,无论执行多少次,它的影响都是相同的。也可以理解为,信息不会因为GET请求而改变,所以它是幂等的。(GET只是查询嘛,并不修改信息~)

5.一个http响应一般由3部分组成:

(1)状态码

(2)响应头(服务器类型、内容类型长度等信息)

(3)响应体

6.状态码

1**:信息类,表示收到web浏览器请求,正在进一步处理中

2**:成功,表示用户请求被正确接收、理解和处理

3**:重定向,表示请求没有成功,客户必须采取进一步操作

4**:客户端错误,表示客户端提交的请求有错误
5**:服务器错误,表示服务器不能完成对请求的处理

二、XMLHttpRequest请求&响应

请求:

1.open(method,url,async):

method:GET或POST

url:地址

async:是否异步(true或false)

2.send(string):

GET时,通常不传string字符串,POST时,传string,即:传想要进行的修改。

响应:

1.获取响应值

responseText:获得字符串形式的响应数据

responseXML:获得XML形式的响应数据

status和statusText:以数字和文本形式返回http状态码

getAllResponseHeader():获取所有的响应报头

getResponseHeader():查询响应中的某个字段的值

2.readyState属性取值:

0:请求为初始化,open还未调用

1:服务器连接已建立,open已经调用

2:请求已接收,即服务器接收到头信息

3:请求处理中,即接收到响应主体了

4:请求已完成,且响应已就绪。也就是响应完成了

三、一个典型的XMLHttpRequest(XHR)建立ajax异步请求的过程:

1.var requset=new XMLHttpRequest();//new一个XHR对象

2.request.open("GET","get.php",true);

3.request.send();

4.request.onreadystatechange=function(){ //readyState每次变化,就执行一次本函数

if(request.readyState===4&&request.status===200){

//做一些事情 request.responseText

}

}

四、jQuery中的ajax

type:POST或GET,默认为GET

url:发送请求的地址

data:一个对象,连同请求发送到服务器的数据

dataType:预期服务器返回的数据类型,一般为json

success:是一个方法,请求成功后的回调函数。传入返回后的数据,以及包含成功代码的字符串。

error:是一个方法,请求失败时调用此函数。传入XMLHttpRequest对象。

调用举例:

$.ajax({

type:"POST",

url:"service.php?number="+$("#keyword").val(),

dataType:"json",

data:{ //POST传data,GET不传

name:xxx,

stuno:xxx,

age:xxx

},

success:function(data){

if(data.success){


}else{


}

},

error:function(jqXHR){

alert("发生错误");

}

});

五、关于跨域

一个域名地址的组成:

http://www.abc.com:8080/scripts/jquery.js

【协议、子域名、主域名、端口号、请求资源地址】

协议、子域名、主域名、端口号这4者中任意一个不相同时,都算作不同域。不同域之间互相请求资源,就是跨域。例如:http://www.abc.com:8080/index.html 请求 http://www.efg.com:8080/service.php。

处理跨域的方式:代理、JSONP、XHR2



0 0
原创粉丝点击