1、注意:
1)返回值,都是字符串
2)缓存
用url缓存
https://www.baidu.com?wd=123
https://www.baidu.com
解决:在URL身上加一个随机数作参数,导致每次请求 URL,都是不一样的
t = Math.random();// 随机因子
3)乱码:
你自己的文件 和 请求的文件 编码不一致导致
解决: 保持一致
4)不关心后缀
习惯: .json .data
2、ajax工作流程
1)创建一个ajax对象
var oAjax = new XMLHttpRequest();
var oAjax = new ActiveXObject('Microsft.XMLHTTP');
if(window.XMLHttpRequest)
2)oAjax.open('GET',url,true);
GET.请求方式
url.请求地址
true.是否异步
3)oAjax.send();
4)接收
oAjax.onreadystatechange = function(){
oAjax.reasyState == 4 //完成 通信息状态
oAjax.status>=200 && oAjax.status<300 || oAjax.status == 304
//304 没有修改
成功
};
3、oAjax.readyState 通信状态,只读的,不能修改(赋值)
0 UNSEND ajax对象已经准备完毕,但是还没有打开连接
1 OPENDED 已经打开连接(建立好连接)
2 HEADERS-RECEVICED 发送请求完毕,头部信息也接收完毕了
3 LOADING 下载内容(接收内容)
4 DONE 操作完毕
4、http状态码:
200 OK
302 Move temporarily 重定向
304 Not Modified
403 Forbidden
404 Not Found
405 Method Not Allowed
414 Request-URI Too Long
500 Internal Server Error 后台代码写问题
502 Bad Gateway
eg:
function json2url(json){ json.t = Math.random(); var arr = []; for(var name in json){ arr.push(name+'='+json[name]); } return arr.join('&'); }/* * url:请求地址 * data:提交数据、参数 * time:超时时间 * type: get post * success:fn * error:fn * */function ajax(json){ var json = json || {}; if(!json.url){ alert('请给出url地址'); return; } json.data = json.data || {}; json.time = json.time || 1000; json.type = json.type || 'GET'; //1.ajax对象 request:请求 response:响应 if(window.XMLHttpRequest){ var oAjax = new XMLHttpRequest(); } else{ var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); } //2.建立连接 switch (json.type.toLowerCase()){ case 'post': oAjax.open('POST',json.url,true); oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');//设置一个请求头 oAjax.send(json2url(json.data)); break; case 'get': oAjax.open('GET',json.url+'?'+json2url(json.data),true); //3.打开连接 oAjax.send(); break; } //加载中 json.fnLoading && json.fnLoading(); //4.接收 var timer = null; oAjax.onreadystatechange = function(){ if(oAjax.readyState == 4){ //完成 clearTimeout(timer); json.complete && json.complete(); if(oAjax.status >= 200 && oAjax.status<300 || oAjax.status == 304){ //成功 json.success && json.success(oAjax.responseText); } else{ json.error && json.error(oAjax.status); } } }; timer = setTimeout(function(){ alert('你的网速太慢了,别等了!'); oAjax.onreadystatechange = null; },json.time); }
作者:杨小楊
链接:https://www.jianshu.com/p/537d64e95e3e
共同学习,写下你的评论
评论加载中...
作者其他优质文章