zoukankan      html  css  js  c++  java
  • javascript-ajax学习

    /**
     *     @todo 封装Ajax 传输类
     *     @param params:参数
     *    @example 用法: var mAjaxer = new Ajaxer(parames);mAjaxer.send();
     
    */
    (function (window,undefined) {
        var defined = {},
            rtrim = /^(s|u00A0)+|(s|u00A0)+$/g;
        defined.trim = function( text ) 
        {
            return (text || "").replace( rtrim, "" );
        };
        defined.parseJSON = function(data,error) 
        {
            if ( typeof data !== "string" || !data ) 
                return null;
            data = this.trim(data);
            // Make sure the incoming data is actual JSON
            // Logic borrowed from http://json.org/json2.js
            if ( /^[],:{}s]*$/.test(data.replace(/\(?:["\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
                .replace(/"[^"\ ]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]?d+)?/g, "]")
                .replace(/(?:^|:|,)(?:s*[)+/g, "")) ) {
                // Try to use the native JSON parser first
                return window.JSON && window.JSON.parse ?
                    window.JSON.parse( data ) :
                    (new Function("return " + data))();
            }
            else 
                error("Invalid JSON: " + data);
        };
        defined.json2String = function(jsonData) {
            var strArr = [];
            for(var k in jsonData) {
                strArr.push(k + "=" + jsonData[k]);    
            }
                
            return strArr.join("&");
        }
        var Ajaxer = function(params)
        {
            var _p = {},
                xmlHttp;
            if (typeof params == 'undefined') 
            {
                return false;
            }
            // 发送请求
            this.send =    function ()
            {
                xmlHttp = null;
                xmlHttp = _p.createXMLHttp();
                if(xmlHttp == null)
                {
                    error = {'code' : 404,"message" : "您的浏览器版本过低,无法创建异步对象,请升级您的浏览器!"}
                    params.error(error);
                }
                else
                {
                    //打开ajax请求
                    xmlHttp.open(params.method,params.url,params.async);
                    //一般jquery会传递这个参数,进行区分ajax请求
                    xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); 
                    //如果是post的话,要对url进行encode
                    if (params.method.toLowerCase() == 'post')
                    {
                        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                        if (typeof params.data != 'string')
                            params.data = defined.json2String(params.data);
                        //对post或get发送数据
                        xmlHttp.send(params.data);
                    }
                    else
                    {
                        xmlHttp.send(null);
                    }
                    
                    //处理状态
                    xmlHttp.onreadystatechange = _p.SendBack;
                }
            };
            //处理回调函数
            _p.SendBack = function ()
            {    
                if(xmlHttp.readyState == 4)
                {
                    if(xmlHttp.status == 200)
                    {    
                        var data,
                            ct = xmlHttp.getResponseHeader("content-type") || "";
                        data = xmlHttp.response;
                        //判断是否是json
                        if (params.dataType === "json" || !params.dataType && ct.indexOf("json") >= 0)
                        {
                            data = defined.parseJSON(data,params.error);
                        }
                        params.success(data);                
                    }
                    else
                    {
                        var error = {'code' : xmlHttp.status,"message" : xmlHttp.statusText};
                        params.error(error);
                    }
                    if (params.async) 
                    {
                        xmlHttp = null;
                    }
                }
            };
            //创建ajax对象
            _p.createXMLHttp = function()
            {
                var xmlhttp = null;
            
                // 针对不同浏览器建立这个对象的不同方式写不同代码
                if(window.XMLHttpRequest) {
                    xmlhttp = new XMLHttpRequest();
                    //针对某些特定版本的Mozillar浏览器的BUG进行修正
                    if(xmlhttp.overrideMimeType) {
                        xmlhttp.overrideMimeType("text/xml");
                    }
                    
                } else if (window.ActiveXObject) {
                    var activexName = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
                    for (var i=0; i<activexName.length; i++) {
                        try {
                            xmlhttp = new ActiveXObject(activexName[i]);
                            break;
                        } catch(e) {}
                    }
                }
                return xmlhttp;
            }
        }
        
        window.Ajaxer = Ajaxer;
        window.defined = defined;
    })(window);

    用惯了jquery原生的忘了差不多,补一下. 

  • 相关阅读:
    linux安装python3.6以后报错处理
    cent07设置服务开机自启
    python进程和线程中的两个锁
    针对Material主题怎么修改 phpstorm 代码编辑器的样式
    CentOS中zip工具的基本使用
    Anaconda退出Base环境
    微擎用户自动回复对应的链接、控制器、模板
    微擎应用模块中的参数设置对应的前端页面
    微擎设置借用权限
    微擎分配不同的用户具有不同应用的操作权限
  • 原文地址:https://www.cnblogs.com/kaixincainiao/p/3591571.html
Copyright © 2011-2022 走看看