AJAX知识大全

AJAX

Asynchronous JavaScript + XML(异步JavaScript和XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

AJAX使用步骤

原生的Ajax使用步骤:

1. 创建XMLHttpRequest 对象
 var xhr =new XMLHttpRequest();
2. 向服务器发送请求
xhr.open("请求方式","请求地址"[,true是否异步]);

对于GET请求,需要在地址后面以查询字符串方式加上携带的参数,最后一个参数默认为true,异步

xhr.send();

如果需要像 HTML 表单那样 POST 数据,在send()函数之前用setRequestHeader() 来添加 HTTP 头。
send() 方法中规定您希望发送的数据:

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford");
3. 获得来自服务器的响应

当请求被发送到服务器时,我们需要执行一些基于响应的任务。 每当 readyState 改变时,就会触发 onreadystatechange事件。 readyState 属性存有 XMLHttpRequest 的状态信息。 下面是XMLHttpRequest 对象的三个重要的属性

属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪

xhr.onreadystatechange=function(){
    if (xhr.readyState==4 && xhr.status==200){
        document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
}

xhr.responseText获得字符串形式的响应数据
responseXML获得 XML 形式的响应数据

4. xhr的其他方法
 xhr.abort() 如果请求已被发出,则立刻中止请求。
 xhr.onload() 请求成功完成时触发.
 xhr.onloadend()当请求结束时触发,

Jquery中的Ajax使用步骤:

1.使用方法
 $.ajax({
 	url:"/jquery/test1.txt",
 	async:false,
 	success:function(res){
 	}
 });
2. 属性方法设置
async默认值: true,为异步请求。如果需要发送同步请求,请将此选项设置为 false。
$.ajaxPrefilter()在每个请求发送之前且被 $.ajax() 处理之前,处理自定义 Ajax 选项或修改已存在选项
beforeSend(XHR)发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 事件。如果返回 false 可以取消本次 ajax 请求。
cache默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。
complete(XHR, TS)请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述请求类型的字符串。这是一个 Ajax 事件。
contentType这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象如果不设定这个参数,那么 this 就指向调用本次 AJAX 请求时传递的 options 参数)
data发送到服务器的数据。将自动转换为请求字符串格式。
success请求成功后的回调函数。参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。
type请求方式 (“POST” 或 “GET”), 默认为 “GET”
error请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 “timeout”, “error”, “notmodified” 和 “parsererror”。
dataType预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断

HTTP报文结构

请求消息

由 请求行、请求头部、空行、请求数据 四部分组成

1.请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
GET /data/info.html HTTP/1.1

HTTP协议版本有两种:HTTP1.0/HTTP1.1:
HTTP1.0对于每个连接都只能传送一个请求和响应,请求完服务器返回响应就会关闭,HTTP1.0没有Host字段。
而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

2.请求头部

用来描述客户端基本信息,由多行键值对组成

常见的请求头字段含义:

部分头部字段名称描述
Accept-Charset浏览器可接受的字符集
Accept-Language浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到
Host请求的服务器域名
Content-Length表示请求消息正文的长度
Accept浏览器可接受的响应内容类型列表
Cookie通过这个头可以向服务器带数据
User-Agent浏览器类型
3.空行

通过一个空行,告诉服务器请求头部到此为止,分隔作用

4.请求数据

若方法字段是GET,则此项为空,没有数据
若方法字段是POST,则通常来说此处放置的就是要提交的数据

响应消息

响应报文也由三部分组成:响应行、响应头、空行、响应体

1.请求行

响应行一般由协议版本、状态码及其描述组成

 HTTP/1.1 200 OK
状态码描述说明
1xx这一类型的状态码,代表请求已被接受,需要继续处理,不常见
200ok客户端请求成功
301Moved Permanently被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一
302Found在响应报文中使用首部“Location: URL”指定临时资源位置
304Not Modified未修改,服务器不会返回任何资源
400Bad Request语义有误,一般为参数错误
401Unauthorized请求需要用户验证,一般为权限不够
403Forbidden服务器已理解,但是拒绝执行
404Not Found服务器无法找到请求的URL
405Method Not Allowed不允许使用此方法请求相应的URL
408Request Timeout请求超时
500Internal Server Error服务器内部错误
501Internal Server Error服务器不支持改请求方法
502Bad Gateway代理服务器从上游收到了一条伪响应
503Service Unavailable服务器此时无法提供服务,但将来可能可用
2.响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

响应头字段描述
Allow服务器支持哪些请求方法
Content-Length表示内容长度
Date当前的GMT时间,例如,Date:Mon,31Dec200104:25:57GMT
Last-Modified文档的最后改动时间
Set-Cookie设置和页面关联的Cookie
Transfer-Encoding告诉浏览器数据的传送格式
setContentType设置Content-Type头。大多数Servlet都要用到这个方法
3.响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值