是什么?
当需要从服务器中获取数据或者提交数据,发送请求给服务器,可以不必重载整个页面,就能对页面进行更新
过程?
客户端发起http请求,服务器接受请求后做出响应,发送响应数据给客户端
//readyState:
//0: 连接尚未初始化,还没有调用open
//1: 请求已经准备好,已经open,可以send
//2: 服务器接受到请求---作出相应请求正在处理中
//3: 服务器已从请求中获取到了数据,但是响应数据还没有准备好
//4: 服务器已经请求完毕,发送响应数据
get / post 区别?
- get方法中send参数内容无效,但是在firefox中得加上null;在post中在send中加上额外信息
- get在于获取服务器数据,post在于客户端发送数据去更新服务端
- get方法会将参数暴露在url中,而post不会
- post方式需要指定请求头的类型(表单:application/x-www-form-urlencoded,如果在form表单指定了enctype属性,就不需要),get不需要指定
function createRequste() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
} else {
return new ActiveObject('Microsoft.XMLHTTP')
}
}
var xhr = createRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.state === 200) {
}
}
}
xhr.send();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8'),
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.state === 200) {
}
}
}
xhr.send();
应用场景?
- 对数据进行过滤和操作的场景
- 添加或者删除列表中的数据
- 提交表单内容
form 提交
- user agent :先确定操作的成功执行 -》 生成一个form data -》 对form data解码(解码方式看content-type)-》提交解码之后的form data给服务器
关于form表单提交数据时的设置content-type / enctype
作用: 当客户端提交表单数据给服务器时,需要指定提交的表单数据的解码方式,之后将解码后的表单数据提交给服务器
编码方式 | 应用 | 编码规则 |
---|---|---|
application/x-www-form-urlencoded | 单纯的text / ASCII数据 | 空格符转换成‘+’,特殊字符转换成十六进制的ASCII |
multipart/form-data | 二进制数据 | non-ASCII | 不会编码任何的字符串 |
text/plain | 字符串 | 空格符转换成‘+’ |
网友评论