码迷,mamicode.com
首页 > 编程语言 > 详细

ajax 纯javascript

时间:2014-08-29 01:21:41      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   java   io   ar   for   

function createXHR(){
    if(typeof XMLHttpRequest != ‘undefined‘){
        return new XMLHttpRequest();
    }else if(typeof ActiveXObject != ‘undefined‘){
        var version = [
                ‘MSXML2.XMLHttp.6.0‘,
                ‘MSXML2.XMLHttp.3.0‘,
                ‘MSXML2.XMLHttp‘,
        ];
        for(var i=0; i<version.length; i++){
            try{
                return new ActiveXObject(version[i]);
            }catch(e){

            }
        }
    }else{
        throw new Error(‘您的系统或浏览器不支持XHR对象!‘);
    }
}


//名值对转换字符串
function params(data){
    var arr=[];
    for(var i in data){
        arr.push(encodeURIComponent(i) + ‘=‘ + encodeURIComponent(data[i]));
    }
    return arr.join(‘&‘);
}

//封装Ajax
function ajax(obj){
    var xhr = new createXHR();
    obj.url = obj.url + ‘?rand=‘+ Math.random();
    obj.data = params(obj.data);
    if(obj.method == ‘get‘)obj.url += obj.url.indexOf(‘?‘) == -1 ? ‘?‘ +obj.data : ‘&‘ + obj.data ;
    if(obj.async === true){
        xhr.onreadystatechange=function(){
            if(xhr.readyState == 4){
                callback();
            }
        }
    }
    xhr.open(obj.method, obj.url, obj.async);
    if(obj.method === ‘post‘){
        xhr.setRequestHeader(‘Content-Type‘,‘application/x-www-form-urlencoded‘);
        xhr.send(obj.data);
    }else{
        xhr.send(null);
    }
    if(obj.async === false){
        callback();
    }
    function callback(){
        if(xhr.status == 200){
            obj.success(xhr.responseText);
        }else{
            console.log("获取数据错误!错误代号:"+ xhr.status +"错误信息:"+ xhr.statusText);
        }
    }
}

//调用Ajax
addEvent(document, ‘click‘, function(){
    ajax({
        method:‘get‘,
        url:‘demo.php‘,
        data:{
            ‘name‘:‘L&ee‘,
            ‘age‘:100
        },
        success:function(text){
            console.log(text);
        },
        async:true
    });
})

 

ajax 纯javascript

标签:style   blog   http   color   os   java   io   ar   for   

原文地址:http://www.cnblogs.com/oceanden/p/3943927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!