为了账号安全,请及时绑定邮箱和手机立即绑定

ajax

标签:
Html5

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消