We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
Ajax 是浏览器提供的一套方法,可以让用户在不刷新页面的情况下更新用户数据,提高用户体验。也就是在用户浏览网页的同时局部跟新页面的数据。
Ajax 请求数据流程最核心的依赖是浏览器提供的 XMLHttpRequest 对象,它扮演的角色相当于秘书,使得浏览器可以发出 HTTP 请求与接收 HTTP 响应。浏览器接着做其他事情,等收到 XHR 返回来的数据再渲染页面。
XMLHttpRequest
XMLHttpRequest 对象用于在后台与服务器交换数据。
XMLHttpRequest 对象的作用:
在 http 请求与响应的过程中,无论是请求参数还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行传输。我们可以用json相关方法对字符串进行转换json对象,便于获取内容,便于浏览器渲染页面。
一个 Ajax 的基础使用:
var xhr = new XMLHttpRequest(); xhr.open('post','www.xxx.com',true) // 接收返回值 xhr.onreadystatechange = function(){ if(xhr.readyState === 4 ){ if(xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){ console.log(xhr.responseText); } } } // 处理请求参数 postData = {"name1":"value1","name2":"value2"}; postData = (function(value){ var dataString = ""; for(var key in value){ dataString += key+"="+value[key]+"&"; }; return dataString; }(postData)); // 设置请求头 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); // 异常处理 xhr.onerror = function() { console.log('Network request failed') } // 跨域携带cookie xhr.withCredentials = true; // 发出请求 xhr.send(postData);
open 用于初始化一个请求,用法:
xhr.open(method, url, async);
method
get
post
url
async
send 用于发送HTTP请求,即调用该方法后HTTP请求才会被真正发出,用法:
xhr.send(param)
param
string
Blob
abort 用于终止一个 ajax 请求,调用此方法后 readyState 将被设置为 0,用法:
ajax
readyState
0
xhr.abort()
setRequestHeader 用于设置HTTP请求头,此方法必须在 open() 方法和 send() 之间调用,用法:
open()
send()
xhr.setRequestHeader(header, value);
getResponseHeader 用于获取http返回头,如果在返回头中有多个一样的名称,那么返回的值就会是用逗号和空格将值分隔的字符串,用法:
var header = xhr.getResponseHeader(name);
用来标识当前XMLHttpRequest对象所处的状态,XMLHttpRequest对象总是位于下列状态中的一个:
responseText
status
表示http请求的状态, 初始值为0。如果服务器没有显式地指定状态码, 那么status将被设置为默认值, 即200。
http
200
responseType
表示响应的数据类型,并允许我们手动设置,如果为空,默认为text类型,可以有下面的取值:
text
""
"text"
DOMString
"arraybuffer"
response
JavaScript ArrayBuffer
"blob"
"document"
HTML Document
XML XMLDocument
MIME
"json"
JavaScript
JSON
返回响应的正文,返回的类型由上面的responseType决定。
withCredentials
ajax请求默认会携带同源请求的cookie,而跨域请求则不会携带cookie,设置xhr的withCredentials的属性为true将允许携带跨域cookie。
cookie
xhr
true
onreadystatechange
xhr.onreadystatechange = callback;
当readyState属性发生变化时,callback会被触发。
onloadstart
xhr.onloadstart = callback;
在ajax请求发送之前(readyState==1后, readyState==2前),callback会被触发。
readyState==1
readyState==2
callback
onprogress
xhr.onprogress = function(event){ console.log(event.loaded / event.total); }
回调函数可以获取资源总大小total,已经加载的资源大小loaded,用这两个值可以计算加载进度。
total
loaded
onload
xhr.onload = callback;
当一个资源及其依赖资源已完成加载时,将触发callback,通常我们会在onload事件中处理返回值。
onerror
xhr.onerror = callback;
当ajax资源加载失败时会触发callback。
ontimeout
xhr.ontimeout = callback;
当进度由于预定时间到期而终止时,会触发callback,超时时间可使用timeout属性进行设置。
timeout
户端向服务器端传递请求参数的格式有两种。一种是很熟悉的属性名:属性值&属性名:属性值。另外一种就是json数据格式。 不同的请求参数格式在setRequestHeader中的Content-type属性值不一样。
格式形式:name=zhangsan&age=20&sex=男 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
格式形式:{name: 'zhangsan', age: '20', sex: '男'} xhr.setRequestHeader('Content-Type', 'application/json');
The text was updated successfully, but these errors were encountered:
No branches or pull requests
简介
Ajax 是浏览器提供的一套方法,可以让用户在不刷新页面的情况下更新用户数据,提高用户体验。也就是在用户浏览网页的同时局部跟新页面的数据。
Ajax 请求数据流程最核心的依赖是浏览器提供的
XMLHttpRequest
对象,它扮演的角色相当于秘书,使得浏览器可以发出 HTTP 请求与接收 HTTP 响应。浏览器接着做其他事情,等收到 XHR 返回来的数据再渲染页面。XMLHttpRequest
XMLHttpRequest 对象用于在后台与服务器交换数据。
XMLHttpRequest 对象的作用:
在 http 请求与响应的过程中,无论是请求参数还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行传输。我们可以用json相关方法对字符串进行转换json对象,便于获取内容,便于浏览器渲染页面。
一个 Ajax 的基础使用:
XMLHttpRequest 对象常用的函数、属性、事件
函数
open
用于初始化一个请求,用法:
method
:请求方式,如get
、post
url
:请求的url
async
:是否为异步请求send
用于发送HTTP请求,即调用该方法后HTTP请求才会被真正发出,用法:
param
:http 请求的参数,可以为string
、Blob
等类型。abort
用于终止一个
ajax
请求,调用此方法后readyState
将被设置为0
,用法:setRequestHeader
用于设置HTTP请求头,此方法必须在
open()
方法和send()
之间调用,用法:getResponseHeader
用于获取http返回头,如果在返回头中有多个一样的名称,那么返回的值就会是用逗号和空格将值分隔的字符串,用法:
属性
readyState
用来标识当前
XMLHttpRequest
对象所处的状态,XMLHttpRequest
对象总是位于下列状态中的一个:open()
方法。open()
方法已经被调用。send()
方法已经被调用,并且头部和状态已经可获得。responseText
属性已经包含部分数据。status
表示
http
请求的状态, 初始值为0
。如果服务器没有显式地指定状态码, 那么status
将被设置为默认值, 即200
。responseType
表示响应的数据类型,并允许我们手动设置,如果为空,默认为
text
类型,可以有下面的取值:""
responseType
设为空字符串与设置为"text"
相同, 是默认类型 (实际上是DOMString
)。"arraybuffer"
response
是一个包含二进制数据的JavaScript ArrayBuffer
。"blob"
response
是一个包含二进制数据的Blob
对象 。"document"
response
是一个HTML Document
或XML XMLDocument
,这取决于接收到的数据的MIME
类型。"json"
response
是一个JavaScript
对象。这个对象是通过将接收到的数据类型视为JSON
解析得到的。"text"
response
是包含在DOMString
对象中的文本。response
返回响应的正文,返回的类型由上面的
responseType
决定。withCredentials
ajax
请求默认会携带同源请求的cookie
,而跨域请求则不会携带cookie
,设置xhr
的withCredentials
的属性为true
将允许携带跨域cookie
。事件回调
onreadystatechange
当
readyState
属性发生变化时,callback会被触发。onloadstart
在
ajax
请求发送之前(readyState==1
后,readyState==2
前),callback
会被触发。onprogress
回调函数可以获取资源总大小
total
,已经加载的资源大小loaded
,用这两个值可以计算加载进度。onload
当一个资源及其依赖资源已完成加载时,将触发
callback
,通常我们会在onload
事件中处理返回值。异常处理
onerror
当
ajax
资源加载失败时会触发callback
。ontimeout
当进度由于预定时间到期而终止时,会触发
callback
,超时时间可使用timeout
属性进行设置。请求参数的格式
户端向服务器端传递请求参数的格式有两种。一种是很熟悉的属性名:属性值&属性名:属性值。另外一种就是json数据格式。
不同的请求参数格式在setRequestHeader中的Content-type属性值不一样。
application/x-www-form-urlencoded
application/json
参考文档
The text was updated successfully, but these errors were encountered: