美文网首页让前端飞
ajax基本原理及步骤

ajax基本原理及步骤

作者: RossWen | 来源:发表于2017-02-10 12:24 被阅读0次

    Ajax原理: 通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM从而更新页面。

    XMLHttpRequest: XMLHttpRequest是ajax核心机制,IE5中首先引入,是一种异步请求的技术,简单的来说,也就是javascript可以及时向服务器请求和处理响应,而不阻塞用户,达到无刷新的效果。

    步骤:
    1:创建XMLHttpRequest对象,也就是创建一个异步调用对象
    2:建立连接
    3:发送请求
    4:设置函数监控状态,接收数据。

    //ajax({
    //  url:'',//地址
    //  success:function(){},//成功的回调函数
    //  data:{},//传送的数据
    //  type:'',//请求类型
    //  error:function(){},//失败的回调函数
    //  time:3000//设置超时时间
    //});
    function ajax(json){
        if(!json.url){
            alert('请输入正确的url!')
            return;
        }
        json.type=json.type || 'get';
        json.data=json.data || {};
        json.time=json.time || 3000;
        var timer=null;
        //创建ajax对象
        if(window.XMLHttpRequest){
            var oAjax=new XMLHttpRequest();
        }else{
            var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
        }
        switch (json.type.toLowerCase()){
            case 'get':
                oAjax.open('GET',json.url+'?'+json2Str(json.data),true);
                oAjax.send();
                break;
            case 'post':
                oAjax.open('POST',json.url,true);
                //设置请求头
                oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                oAjax.send(json2Str(json.data));
                break;
        }
        //监控状态
        oAjax.onreadystatechange=function(){
            if(oAjax.readyState==4){
                if(oAjax.status>=200&&oAjax.status<300 || oAjax.status==304){
                    json.success && json.sunccess(oAjax.responseText);
                }else{
                    json.error && json.error(oAjax.status);
                }
                clearTimeout(timer);
            }
        };
        timer=setTimeout(function(){
            alert('请求超时!');
            oAjax.onreadystatechange=null;
        },json.time);
    };
    function json2Str(json){
        json.t=Math.random();
        var arr=[];
        for (var name in json) {
            arr.push(name+'='+json[name]);
        }
        return arr.join('&');
    }
    
    

    ajax常用的属性和方法:

    属性
        readyState
        status
        responseText 
        onreadystatechange  
    方法
        open
        send    
        setRequestHeader
        abort 放弃
    

    常见的状态码:

    200 一切正常(ok)
    304 没有被修改(not modified)
    404 没找到页面(not found)
    403 禁止访问(forbidden)
    500 内部服务器出错(internal service error)

    readyState 属性表示Ajax请求的当前状态。它的值用数字代表。

    0 代表未初始化。 还没有调用 open 方法
    1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用
    2 代表已加载完毕。send 已被调用。请求已经开始
    3 代表交互中。服务器正在发送响应
    4 代表完成。响应发送完毕

    同步和异步的区别

    同步 一次只干一件事
    异步 一次干多件事

    get 和 post

    get 32k 不安全 易于分享 数据 通过url传输
    post 1G 相对安全 不易于分享 不通过url传输

    相关文章

      网友评论

        本文标题:ajax基本原理及步骤

        本文链接:https://www.haomeiwen.com/subject/bmegittx.html