一個簡單的ajax封裝

來源:互聯網
上載者:User

var ajax = function(o){
    /*
     * @o.url Request url
     * @o.method Set to post or get
     * @o.async Set async or not
     * @o.data Parameters to be sending
     * @o.success Callback function for success
     * @o.fail Callback function for fail
     * @o.header Set request http herder
     * @o.user Set username
     * @o.pwd Set password
     */
    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    var data = null;
    var url = o.url;
    if( !o.data ) o.data = {};
    o.data['NoCache'] = Math.random();

    var temp= [];
    for(var i in o.data) temp.push(i+"="+o.data[i]);
    data = temp.join("&");

    if( !o.method ) o.method = 'get';
    if( o.method=="get" && data!=null ){
        url = url+( /\?/.test(url) ? '&' : '?' )+data;
        data = null
    }

    xhr.open( o.method, url, o.async||true, o.user||'', o.pwd||'' );
    if(o.header){
        for(var type in o.header){
            xhr.setRequestHeader( type, o.header[type] );
        }
    }
    if(!o.header || !o.header['Content-Type']) xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    xhr.onreadystatechange = function(){
        if(xhr.readyState==4){
            if(xhr.status==200||xhr.status==206){
                if(o.success){ o.success.apply(xhr,[xhr.responseText]); }
            }else{
                if(o.fail){ o.fail.apply(xhr); }
            }
        }
    };
    xhr.send(data);
};
ajax({
    url:"draw.html",
    method:"get",
    async:"true",
    data:{ "url":"test", "sgg":"kktest" },
    header:{
        'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
        'Range':'bytes=0-2'
    },
    success:function(ret){
        alert(ret);
        alert(this.getAllResponseHeaders());
    },
    fail:function(){
        alert(this.status);
    }
});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.