/*封装一个ajax工具函数*/

window.$ = {};

/*通过$定义一个ajax函数*/

/*

* 1. type   string   请求的方式  默认是get

* 2. url    string   请求地址  接口地址

* 3. async  boolean  默认的是true

* 4. data   object   {}请求数据

*

* 5.success function  成功回调函数

* 6.error   function  失败的回调函数

* */

$.ajax = function(options){

if(!options) return false;

/*options 参数传递*/

var type = options.type || 'get';

var url = options.url || location.pathname;

var async = options.async === false ? false : true;

var data = options.data || {};

/*data 选要转化成  name=xjj&age=10*/

var dataStr = '';

for(var key in data){

//console.log(data[key]);

dataStr += key+'='+data[key]+'&';

}

/*如果就数据  就裁剪掉最后一个&*/

dataStr = dataStr && dataStr.slice(0,-1);

/*ajax 编程*/

/*初始化*/

var xhr = new XMLHttpRequest();

/*请求行*/

/*如果是get请求那么就要拼接数据在url后面 ?*/

xhr.open(type,type == 'get'?url+'?'+dataStr:url,async);

/*请求头*/

/*如果是post请求需要设置 content-type application/x-www-form-urlencoded*/

if(type == 'post'){

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

}

options.beforeSend && options.beforeSend();

/*请求主体*/

/*如果是post请求需要把数据字符传过去  否则是null*/

xhr.send(type=='get'?null:dataStr);

/*监听响应状态的改变*/

xhr.onreadystatechange = function(){

/*响应成功*/

if(xhr.readyState == 4){

if( xhr.status == 200){

/*处理响应成功函数*/

var result = '';

/*接受数据*/

/* json  xml  string*/

var contentType = xhr.getResponseHeader('Content-Type');

if(contentType.indexOf('xml') > -1){

/*服务端返回的是xml数据格式*/

result = xhr.responseXML;

}else if(contentType.indexOf('json') > -1){

/*服务端返回的是json数据格式*/

/*json字符串*/

var str  = xhr.responseText;

result = JSON.parse(str);

}else{

result = xhr.responseText;

}

/*调用回调函数*/

options.success && options.success(result);

}

/*响应失败*/

else{

/*处理响应失败函数*/

options.error && options.error('request fail code' + xhr.status);

}

options.complete &&  options.complete();

}

}

};

$.get = function(options){

options.type = 'get';

$.ajax(options);

};

$.post = function(options){

options.type = 'post';

$.ajax(options);

};

封装一个Ajax工具函数的更多相关文章

  1. AJAX编程-封装ajax工具函数

    即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...

  2. JavaScript封装Ajax工具函数及jQuery中的ajax,xhr在IE的兼容

    封装ajax工具函数 首先要思考:1.为什么要封装它?提高开发效率2.把一些不确定的情况考虑在其中 a. 请求方式 b. 请求地址 c. 是否异步 d. 发送参数 e. 成功处理 f. 失败处理3.确 ...

  3. [js高手之路] 跟GhostWu一起封装一个字符串工具库-架构篇(1)

    所谓字符串工具库就是利用javascript面向对象的知识封装一个常用的字符串处理方法库,首先给这个库起个名字,好吧就叫ghostwu.js. 看下ghostwu.js的整体架构: ; (functi ...

  4. 基于JavaScript封装的Ajax工具类

    前段是件由于工作需要无奈编写了一个给予JavaScript封装的工具类,技术有限,误喷,感谢大家的支持. 1.以下是JavaScript 的 Ajax 工具类. function createXMLH ...

  5. 自己的一个LESS工具函数库

    自己大概在一年前开始使用LESS编写样式,现在感觉不用LESS都不会写样式了.现在写静态页面完全离不开LESS与Zen Coding,我可以不用什么IDE,但这两个工具却必须要,当然也强烈推荐看到这篇 ...

  6. 使用原生JS封装一个ajax

    function ajax(data){ //第一步,创建XHR对象 var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpReque ...

  7. js 封装一个均速动画函数

    //动画函数---任意一个元素移动到指定的目标位置 //element为元素 target为位置 function carToon(element, target) { //设置一个定时器让他循环去增 ...

  8. 小程序封装一个ajax

    小程序中,我们一般习惯把提交接口请求的方法放在一个公共js里面.下面是一个简单实现. (1)我们把所有请求的地址都放在一个json里面 var postAddress = { "domin& ...

  9. [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)

    我们接着上一篇的继续,在上一篇我们完成了工具库的架构,本文扩展字符串去空格的方法, 一共有3个 1,trimLeft: 去除字符串左边的空格 2,trimRight: 去除字符串右边的空格 3,tri ...

随机推荐

  1. Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介

    最近在学习Dojo,但样式问题真是头疼呀,虽然清新的淡蓝色很是减缓眼睛的疲劳,但这个扁平化简约风盛行的年代,光是清新的拟物已经满足不了群众的需求了,所以就在这样的需求下,我知道了bootstrap f ...

  2. centos php nginx 添加到service

    1. nginx A. # vi /etc/init.d/nginx B. #!/bin/sh # Comments to support chkconfig on RedHat Linux # ch ...

  3. matlab,xls转换为mat文件

    b=xlsread('iris_data.xls');save iris_data.mat b

  4. javaweb之session过期验证

    session过期判断的基本思想:用户登录成功后,将用户账号信息保存在session中,然后几乎每次执行命令都要经过过滤器,过滤器检查session中是否存在账号,若不存在, 则返回登录页面,反之正常 ...

  5. set, list 和map知识总结

    set就是集,无序,不可重复 举例:HashSet,LinkedHashSet List是映射,通过键值对存储,无序,不可重复 举例:HashMap,HashTable,LinkedHashMap 在 ...

  6. 树莓派+Android Things

    在开始之前 谷歌前不久发布了Android Things面向物联网的系统,用意是想让android开发者用原来开发app的方式开发硬件相关的应用,扩展了android开发的方向和前景,而谷歌的Andr ...

  7. php 中文转拼音首字母问题

    <?php /* 中文汉字转拼音首字母的PHP简易实现方法. 要求: 只能是GB2312码表里面中文字符 转换得到字符串对应的拼音首字母大写. 用法: echo zh2py::conv('Chi ...

  8. MapReduce库类

    Hadoop除了可以让开发人员自行编写map函数和reduce函数,还提供一些常用函数(mapper.reducer和partitioner)的类库,这些类位于 org.apache.hadoop.m ...

  9. 把Excel工作簿的每个工作表提取出来保存为新工作簿

    平台:MS office 2010 任务:有个excel工作簿,其中有上百个工作表,要求把每一个工作表全部保存为新工作簿,如果一个一个复制出来太傻了,可以用excel自带的VB解决. 方法:打开工作簿 ...

  10. selenium中的webdriver定位元素失败的常见原因

    自动化测试中经常会出现无法定位元素的情况,报selenium.common.exceptions.NoSuchElementException错误 Frame/Iframe原因定位不到元素: 这个是最 ...