/*封装一个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. Leetcode - 458 Poor Pigs

    题目: 总共有1000个罐子,其中有且只有1个是毒药,另外其他的都是水. 现在用一群可怜的猪去找到那个毒药罐. 已知毒药让猪毒发的时间是15分钟, 那么在60分钟之内,最少需要几头猪来找出那个毒药罐? ...

  2. Servlet之保存用户偏好设置简单功能的实现

    写在前面: 先来陈述一下为什么会有这样一个需求和这篇博文. 这是公司的一个项目,我们负责前端,后台服务由其他公司负责.该系统有一个系统偏好设置模块,用户可以设置系统的背景图片等系统样式,因为这是一个比 ...

  3. iOS7之后的文本高度封装

    #import "NSString+Util.h" @implementation NSString (Util) +(CGFloat)changeStationWidth:(NS ...

  4. 关于centos连接mssql的问题

    今天要搬迁服务器,需要连接sqlserver,然后装了freetds之后死活就是连接不上mssql,最后才发现,原来需要配置freetds,只需要加上下面一段即可: [192.168.10.12] h ...

  5. Win10安装安卓ADB驱动

    Win10安装安装ADB驱动 Step1: 首先在黄色感叹号的ADB Interface 点右键菜单,选择“更新驱动程序软件”菜单. 在弹出“更新驱动程序软件”窗口中,选择下面一项“浏览计算机以查找驱 ...

  6. 《JavaScript高级程序设计》读书笔记 ---Object 类型

    引用类型的值(对象)是引用类型的一个实例.在ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管ECMAScript从技术上讲是一门面 ...

  7. Hdu 3363 Ice-sugar Gourd(对称,圆)

    Ice-sugar Gourd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. js中运算符

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. iOS开发极光推送显示 开发证书没有通过验证 是否重新上传证书?解决方法

    1.证书密码错误 2证书环境不匹 3导证书时因手误把私钥导出来了,而不是证书 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候请不要展开证书: ...

  10. POJ 2305 Basic remains(进制转换)

    题目链接:http://poj.org/problem?id=2305 ime Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5326 ...