Ajax:异步交互传输技术 ----就是用来与后台交互数据用的php
GET请求方式:经过URL地址传递,其传输数据也在URL地址中 ,通常是以字符串形式传递接收,安全性相对不过高后端
POST请求方式:经过浏览器内部传输,通常在send()方法前面要添加头文件即setRequestHeader(),数据由send()方法借由参数形式传递,传递数据格式多,安全性相对高点数组
发送请求(get和post的区别):浏览器
send(要发送的数据):发送请求
中文编码
缓存
POST:setRequestHeader(类型, 内容):设置请求头
"Content-Type","application/x-www-form-urlencoded”
缓存
数据类型(返回数据的处理):
服务器返回给我们的真正数据
XML、HTML、JSON
JSON的写法
Eval解析JSON的时候须要注意的地方
JSON.parse() : 字符串解析成对象
安全
后端数据的接收:
$_GET
- 经过URL传递给该脚本的变量的数组
$_POST
- 经过HTTP POST方法(表单)传递给该脚本的变量的数组
先后台键名和传输方式必须一致
数据传输方式
数据获取方式
服务器
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
xhr.open('post','2.post.php',true);
//post方式,数据放在send()里面做为参数传递
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明发送的数据类型
//post没有缓存问题
//无需编码
xhr.send('username=刘伟&age=30');
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
alert( xhr.responseText );
} else {
alert('出错了,Err:' + xhr.status);
}
}
}app
get缓存问题:dom
来源:每次都是发送同一个URL地址,发送访问请求后,会有一个缓存,以后仍是一样的一个URL地址,这时候,浏览器就会直接去读取缓存,不会再向服务器发送请求异步
解决方法:‘2.get.php?username=leo&age=30&’+new Date().getTime();或者加个Math.random()随机函数;在URL问号后面链接一个随机数时间戳
get传输中文有乱码问题: URL中传输数据,使用编码 encodeURL ‘2.get.php?username='+encodeURI('刘伟')+'&age=30&’+new Date().getTime();
post方式:
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');声明数据发送的数据类型
post方式,数据放在send()里面做为参数传递
没有中文乱码问题,由于在请求头中已经告诉后台的格式了