码迷,mamicode.com
首页 > Web开发 > 详细

封装的 ajax 方法

时间:2015-12-20 19:28:21      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

开发的时候,可能项目中不需要加载jquery这种庞大的js插件。但又要使用到ajax这种功能该如何办呢?下面和大家分享几种利用javascript实现原生ajax的方法。

/* ajax */
var xmlHttp;

function createxmlHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject(‘Microsoft.XMLHTTP‘);
    } else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest();
}

function doGet(url) { //注意在传参数值的时候最好使用encodeURI处理一下,防止乱码
    createxmlHttpRequest();
    xmlHttp.open(‘GET‘, url);
    xmlHttp.send(null);
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            alert(‘success‘);
        } else {
            alert(‘fail‘);
        }
    }
}

function doPost(url, data) { //注意在传参数值的时候最好使用encodeURI处理一下,防止乱码
    createxmlHttpRequest();
    xmlHttp.open(‘POST‘, url);
    xmlHttp.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded‘);
    xmlHttp.send(data);
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            alert(‘success‘);
        } else {
            alert(‘fail‘);
        }
    }
}
var createAjax = function() {
    var xhr = null;
    try { //IE系列浏览器
        xhr = new ActiveXObject(‘microsoft.xmlhttp‘);
    } catch(e1) {
        try { //非IE浏览器
            xhr = new XMLHttpRequest();
        } catch(e2) {
            window.alert(‘您的浏览器不支持ajax,请更换!‘);
        }
    }
    return xhr;
};
var ajax = function(conf) {
    var type = conf.type; //type参数,可选
    var url = conf.url; //url参数,必填
    var data = conf.data; //data参数可选,只有在post请求时需要
    var dataType = conf.dataType; //datatype参数可选
    var success = conf.success; //回调函数可选
    if (type == null) { //type参数可选,默认为get
        type = ‘get‘;
    }
    if (dataType == null) { //dataType参数可选,默认为text
        dataType = ‘text‘;
    }
    var xhr = createAjax();
    xhr.open(type, url, true);
    if (type == ‘GET‘ || type == ‘get‘) {
        xhr.send(null);
    } else if (type == ‘POST‘ || type == ‘post‘) {
        xhr.setRequestHeader(‘content-type‘, ‘application/x-www-form-urlencoded‘);
        xhr.send(data);
    }
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            if (dataType == ‘text‘ || dataType == ‘TEXT‘) {
                if (success != null) { //普通文本
                    success(xhr.responseText);
                }
            } else if (dataType == ‘xml‘ || dataType == ‘XML‘) {
                if (success != null) { //接收xml文档
                    success(xhr.responseXML);
                }
            } else if (dataType == ‘json‘ || dataType == ‘JSON‘) {
                if (success != null) { //将json字符串转换为js对象
                    success(eval(‘(‘ + xhr.responseText + ‘)‘));
                }
            }
        }
    };
};


/* 调用函数 */
ajax({
    type:‘post‘,//post或者get,非必须
    url:‘js/data.json‘,//必须的
    // data:‘name=dipoo&info=good‘,//非必须
    dataType:‘json‘,//text/xml/json,非必须
    success:function(data){//回调函数,非必须
        console.log(data);
    }
});

  

封装的 ajax 方法

标签:

原文地址:http://www.cnblogs.com/zion0707/p/5061471.html

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