• js 封装原生ajax


    jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿。这时我们就需要用原生JS写一个ajax函数了。其实所有框架的ajax函数都是基于原生来写的,只不过被封装到了他的框架里,我们只需要调用即可。

    /* 封装ajax函数
     * @param {string}opt.type http连接的方式,包括POST和GET两种方式
     * @param {string}opt.url 发送请求的url
     * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
     * @param {object}opt.data 发送的参数,格式为对象类型
     * @param {function}opt.success ajax发送并接收成功调用的回调函数
     */
        function ajax(opt) {
            opt = opt || {};
            opt.method = opt.method.toUpperCase() || 'POST';
            opt.url = opt.url || '';
            opt.async = opt.async || true;
            opt.data = opt.data || null;
            opt.success = opt.success || function () {};
            var xmlHttp = null;
            if (XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }
            else {
                xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
            }var params = [];
            for (var key in opt.data){
                params.push(key + '=' + opt.data[key]);
            }
            var postData = params.join('&');
            if (opt.method.toUpperCase() === 'POST') {
                xmlHttp.open(opt.method, opt.url, opt.async);
                xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
                xmlHttp.send(postData);
            }
            else if (opt.method.toUpperCase() === 'GET') {
                xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);
                xmlHttp.send(null);
            } 
            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    opt.success(xmlHttp.responseText);
                }
            };
        }

    应用实例

    ajax({
        method: 'POST',
        url: 'test.php',
        data: {
            name1: 'value1',
            name2: 'value2'
        },
        success: function (response) {
           console.log(response);
        }
    });
  • 相关阅读:
    MyGeneration:开源的代码生成工具
    有了NHibernate就不再需要DAO了
    在vs编辑器里走来走去的快捷键
    asp.net的程序的一种简化结构
    取得gridview的行值
    asp.net中MVC模式的简单实现
    美味书签上的信息质量要好于博客RSS
    DAO已死,至少是中小型项目是这样
    免费好看的msdn中文杂志电子版
    Rhino Mocks是很不错的开源测试框架
  • 原文地址:https://www.cnblogs.com/shenjp/p/6500698.html
Copyright © 2020-2023  润新知