AJAX的封装

封装为对象

<script>
    var AjaxUtil = {
        //基础选项
        options:{
            method : "get", //get ,post
            url : "", //请求的路径 required
            params : {}, //请求的参数
            type : "text", //返回的内容类型,text,xml,json
            callback : function(){} //回调函数 required
        },

        //创建XMLHttpRequest对象
        createRequest : function(){
            var xmlhttp;
            try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE6以上版本
            }catch(e){
                try{
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE6以下版本
                }catch(e){
                    try{
                        xmlhttp = new XMLHttpRequest();
                    }catch(e){
                        alert("Your browser is not support AJAX");
                    }
                }
            }
        },

        //设置基础选项
        setOptions : function(newOptions){
            for (var pro in newOptions){
                this.options[pro] = newOptions[pro];
            }
        },

        //格式化请求参数
        formateParameters : function(){
            var paramsArray = [];
            var params = this.options.params;
            for (var pro in params){
                var paramValue = params[pro];
                paramsArray.push(pro + "=" + paramValue);
            }
            return paramsArray.join("&");
        },

        //状态改变的处理
        readystatechange : function(xmlhttp){
            //获取返回值
            var returnValue;
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
                switch(this.options.type){
                    case "xml":
                        returnValue = xmlhttp.responseXML;
                        break;
                    case "json":
                        var jsonText = xmlhttp.responseText;
                        if(jsonText){
                            returnValue = eval("(" + jsonText + ")");
                        }
                        break;
                    default:
                        returnValue = xmlhttp.responseText;
                        break;
                }

                if (returnValue){
                    this.options.callback.call(this,returnValue);
                }else{
                    this.options.callback.call(this);
                }
            }
        },

        //发送Ajax请求
        request : function(options){
            var ajaxObj = this;

            //设置参数
            ajaxObj.setOptions.call(ajaxObj,options);

            //创建XMLHttpRequest对象
            var xmlhttp = ajaxObj.createRequest.call(ajaxObj);

            //设置回调函数
            xmlhttp.onreadystatechange = function(){
                ajaxObj.readystatechange.call(ajaxObj,xmlhttp);
            };

            //格式化参数
            var formateParams = ajaxObj.formateParameters.call(ajaxObj);

            //请求的方式
            var method = ajaxObj.options.method;
            var url = ajaxObj.options.url;

            if("GET" === method.toUpperCase()){
                url += "?" + formateParams;
            }

            //建立连接
            xmlhttp.open(method,url,true);

            if("GET" === method.toUpperCase()){
                xmlhttp.send(null);
            }else if{
                //如果是POST提交,设置请求头信息
                xmlhttp.setRequestHeader("Content-Type",
                    "application/x-www-form-urlencoded");
                xmlhttp.send(formateParams);
            }
        }
    };
</script>
时间: 2024-10-09 15:40:34

AJAX的封装的相关文章

原生ajax与封装的ajax使用方法

当我们不会写后端接口来测试ajax时,我们可以使用node环境来模拟一个后端接口. 1.模拟后端接口可参考http://www.cnblogs.com/heyujun-/p/6793900.html网站整站开发小例子,在打开命令窗口并转到所在项目文件夹下在命令行中输入npm install express --save,安装express中间件. 2.把当中的app.js的内容换成 var express=require('express'); //var path=require('path'

Ajax的封装。

封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用.    封装支持接收来自服务端的数据,不可以发送数据到服务端 /** * 此封装只支持接收来自服务端的数据,不可以发送数据到服务端 */ function ajax(obj) { var xhr = new XMLHttpRequest(); obj.url = obj.url + '?rand=' + Math.ran

原生态AJAX详解和jquery对AJAX的封装

AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在貌似已经无处不在了,其实自从web2.0的广泛发展带来了AJAX的发展.我们目前的客户端可以分为胖客户端(C/S).廋客户端(B/S), PS:胖客户泛指客户端承担一部分计算工作减轻服务器压力.典型应用 :C / S架构的客户端.瘦客户泛指客户端不承担任何计算工作,完全依赖服务器端计算.典型应用:B

ajax请求封装调用

/* * ajax请求封装 */ function _ajax(url,data,callback){ try { $.ajax({ url:url, type:"POST", data:data, dataType:'json', success:function(data){ try { if(data.code == 0){ mui.alert('保存成功') }else{ mui.toast('保存失败'); } } catch(e) { mui.toast('获取数据失败')

JS学习之ajax相关知识和ajax的封装

XMLHttpRequest对象 1. XMLHttpRequest用于在后台与服务器交换数据,是AJAX之所以能对网页进行局部刷新的核心,同时Ajax技术离开了XMLHttpRequest对象将失去与服务器异步通信的能力. 2:不同的浏览器创建XMLHttpRequest对象使用的语句是不同的. 3:3.XMLHttpRequest对象方法与属性 方法 描述 open(method,url,[async],[username],[password]) 规定请求的类型.URL 以及是否异步处理请

ajax框架封装

public.js //1.定义自调用匿名函数,用于解决函数冲突问题 (function(){ //2.定义一个函数用于获取指定id的dom对象 var $ = function(id){ return document.getElementById(id); }; //4.解决Ajax对象兼容性问题 $.init = function() { //W3C浏览器 try { return new XMLHttpRequest(); } catch(e) {} //IE浏览器 try { retu

ajax简单封装

var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性 xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5&j=10", true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓

AJAX编程-封装ajax工具函数

即 Asynchronous [e's??kr?n?s] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器进行通信. XMLHttpRequest可以以异步方式的处理程序,浏览器内建对象,用于在后台与服务器通信(交换数据) ,由此我们便可实现对网页的部分更新,而不是刷新整个页面. 封装ajax工具函数 $.ajax = function(options){ if(!options) return fal

Ajax 简单封装

1 //原生Ajax 代码: 2 3 var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性 4 xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5", true); //“准备”向服务器的AJAXTest.ashx发出Pos