GET 和 POST的区别
刚刚学了AJAX,以下只能是我自己的简单认识。
get | post |
---|---|
一般用去请求获取数据 | 一般作为发送数据到后台时使用 |
其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的 | 传递参数放在Request body中,不会在url中显示,比GET稍稍要安全点,且参数长度无限制 |
可被缓存 | 不会被缓存 |
保留在浏览器历史记录中 | 不会保留在浏览器历史记录中 |
只能进行url编码(application/x-www-form-urlencoded) | 支持多种编码方式(application/x-www-form-urlencoded (常用)或 multipart/form-data。 |
将AJAX请求封装到一个函数中的方法如下
<script>
//option 是个对象,里面包含数据有url type success data
function ajax(option) {
var xhr = new XMLHttpRequest();
//如果是get并且是有数据
if (option.type == 'get' && option.data) {
option.url += '?';
option.url += option.data;
option.data = null;
}
xhr.open(option.type, option.url);
//post请求并且有数据
if (option.type == 'get' && option.data) {
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
option.success(xhr.responseText);
//获取传输数据
var type = xhr.getAllResponseHeaders('Content-Type');
//如果传输数据为JSON
if(type.indexOf('json')!=-1){
option.success(JSON.parse(xhr.responseText));
}
//如果传输数据为XML
else if(type.indexOf('xml')!=-1){
option.success(JSON.parse(xhr.responseXML));
}
//啥也不是
else {
option.success(xhr.responseText);
}
}
}
xhr.send(option.data);
}
</script>
封装完毕后,只需要引入一个JS文件,就可以调用这个函数了。