Ajax jquery的库的简化版本

(function(){
    //面向外界的唯一变量接口!
    var myajax = window.myajax = {};
    //作者、版本号等等信息
    myajax.author = "考拉";
    myajax.version = "1.0.0";

//这个对象有两个属性,get、post属性,都是函数
    myajax.get = function(URL,queryJSON,callback){
        //创建xhr对象,解决兼容问题
        if(window.XMLHttpRequest){
            var xhr = new XMLHttpRequest();
        }else{
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //结果返回之后做的事情
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
                    callback(null,xhr.responseText);
                }else{
                    callback(new Error("没有找到请求的文件"),undefined);
                }
            }
        }
        //拼接字符串
        var querystring = myajax._queryjson2querystring(queryJSON);
        //配置
        xhr.open("get" , URL + "?" + querystring , true);
        //发送
        xhr.send(null);
    };

//这个对象有两个属性,get、post属性,都是函数
    myajax.post = function(URL,queryJSON,callback){
        //创建xhr对象,解决兼容问题
        if(window.XMLHttpRequest){
            var xhr = new window.XMLHttpRequest();
        }else{
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //结果返回之后做的事情
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
                    callback(null,xhr.responseText);
                }else{
                    callback(new Error("没有找到请求的文件"),undefined);
                }
            }
        }
        //拼接字符串
        var querystring = myajax._queryjson2querystring(queryJSON);
        //配置
        xhr.open("post" , URL , true);
        //发送
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xhr.send(querystring);
    };

//内部函数,查询json变为查询字符串
    //输入一个{"name":"kaola","age":18,"sex":"男"}
    //返回一个name=kaola&age=18&sex=%E8%C6%B6
    myajax._queryjson2querystring = function(json){
        var arr = [];    //结果数组
        for(var k in json){
            arr.push(k + "=" + encodeURIComponent(json[k]));
        }
        return arr.join("&");
    };
})();

Ajax的js库分析简化版的更多相关文章

  1. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  2. arcgis api for js之echarts开源js库实现地图统计图分析

    前面写过一篇关于arcgis api for js实现地图统计图的,具体见:http://www.cnblogs.com/giserhome/p/6727593.html 那是基于dojo组件来实现图 ...

  3. arcgis api 3.x for js 之 echarts 开源 js 库实现地图统计图分析(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  4. Zepto——简化版jQuery,移动端首选js库

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826054.html 一:Zepto是什么 Zepto最初是为移动端开发的js库,是jQuery的轻量级替 ...

  5. 主流JS库一览

    主流JS库一览 标签: prototypedojomootoolsprototypejsjqueryjavascript 2009-10-14 22:52 19936人阅读 评论(2) 收藏 举报   ...

  6. 高德JS依赖分析工程及关键原理

    一.背景 高德 App 进行 Bundle 化后,由于业务的复杂性,Bundle 的数量非常多.而这带来了一个新的问题——Bundle 之间的依赖关系错综复杂,需要进行管控,使 Bundle 之间的依 ...

  7. 解决jQuery多个版本,与其他js库冲突方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...

  8. 仿照jquery封装一个自己的js库(二)

    本篇为完结篇.主要讲述如何造出轮子的高级特性. 一. css方法的高级操作 先看本文第一部分所讲的dQuery css方法 //css方法 dQuery.prototype.css=function( ...

  9. Numeral.js 是一个用于格式化和数字四则运算的js 库

    1.Numeral.js 是一个用于格式化和数字四则运算的js 库. 2.支持多种语言,包含中文在内的17种语言. 在浏览器中引用js文件: <script src="numeral. ...

随机推荐

  1. Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现

    最近一直搞Dcloud ,这是HTML5版本的开发,打包时候,可以打包成 apk 和ipa 分别运行在安卓和ios 机器上面, 但是这里面的资料很少,遇到问题,之后只能自己钻研总结, 现在有这么一个需 ...

  2. 配置Samba共享服务器

    安装samba: sudo apt-get install samba samba-common 由于是挂载另一个磁盘,并作为共享文件存放地: 列出磁盘名和ID air@air-device:~$ s ...

  3. octave手册

    GNU OCTAVE是一种高级语言,主要用于数值计算.它提供交互式命令行窗口,用于求解线性和非线性问题并计算出数值,并可以进行其它数值实验,还可以用来作为一个批量数据处理语言 运行Ocatve: oc ...

  4. 牛顿方法(Newton's Method)

    在讲义<线性回归.梯度下降>和<逻辑回归>中我们提到可以用梯度下降或梯度上升的方式求解θ.在本文中将讲解另一种求解θ的方法:牛顿方法(Newton's method). 牛顿方 ...

  5. 2016最后一贴,终于调通一个测试示例,并发现一个BUG???

    真的难点在于第一次调通.纠结五天,终于搞出界面. 也发现了一个书上代码,编辑用户时死活不通的情况,我将Links去了,改在data里,我X,,全OK了.. 原来的代码: onAdd: function ...

  6. jsf组件对应表

    组件 标签 说明 UIForm form 表示 HTML表单元素 UIInput InputText 单行文本输入控件   inputTextarea 多行文本输入控件   InputSecret 密 ...

  7. 大数据项目实践:基于hadoop+spark+mongodb+mysql+c#开发医院临床知识库系统

    一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS ...

  8. Memo

    1.Webpack: node_modules/css/index.js didn't return a function   npm install css-loader style-loader ...

  9. eclipse项目上面有个红叉,但是没有任何地方有错误

    eclipse项目上面有个红叉,但是没有任何地方有错误,clear,refresh,重启都试过了,依然没用, 后来我换了一个workspace,编译的时候提示: Description Resourc ...

  10. 阿里云linux ecs服务器配置apache+php环境

    我们需要安装的软件有apache,php和MySQL. 首先关闭SELINUX(SELINUX是一个安全子系统,它能控制程序只能访问特定文件.如果不关闭,你可能访问文件受限): vi /etc/sel ...