封装一个Ajax工具函数
/*封装一个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工具函数的更多相关文章
- AJAX编程-封装ajax工具函数
即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...
- JavaScript封装Ajax工具函数及jQuery中的ajax,xhr在IE的兼容
封装ajax工具函数 首先要思考:1.为什么要封装它?提高开发效率2.把一些不确定的情况考虑在其中 a. 请求方式 b. 请求地址 c. 是否异步 d. 发送参数 e. 成功处理 f. 失败处理3.确 ...
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-架构篇(1)
所谓字符串工具库就是利用javascript面向对象的知识封装一个常用的字符串处理方法库,首先给这个库起个名字,好吧就叫ghostwu.js. 看下ghostwu.js的整体架构: ; (functi ...
- 基于JavaScript封装的Ajax工具类
前段是件由于工作需要无奈编写了一个给予JavaScript封装的工具类,技术有限,误喷,感谢大家的支持. 1.以下是JavaScript 的 Ajax 工具类. function createXMLH ...
- 自己的一个LESS工具函数库
自己大概在一年前开始使用LESS编写样式,现在感觉不用LESS都不会写样式了.现在写静态页面完全离不开LESS与Zen Coding,我可以不用什么IDE,但这两个工具却必须要,当然也强烈推荐看到这篇 ...
- 使用原生JS封装一个ajax
function ajax(data){ //第一步,创建XHR对象 var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpReque ...
- js 封装一个均速动画函数
//动画函数---任意一个元素移动到指定的目标位置 //element为元素 target为位置 function carToon(element, target) { //设置一个定时器让他循环去增 ...
- 小程序封装一个ajax
小程序中,我们一般习惯把提交接口请求的方法放在一个公共js里面.下面是一个简单实现. (1)我们把所有请求的地址都放在一个json里面 var postAddress = { "domin& ...
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)
我们接着上一篇的继续,在上一篇我们完成了工具库的架构,本文扩展字符串去空格的方法, 一共有3个 1,trimLeft: 去除字符串左边的空格 2,trimRight: 去除字符串右边的空格 3,tri ...
随机推荐
- mysql随记
.frm是描述了表的结构,.MYD保存了表的数据记录,*.MYI则是表的索引 ibd是MySQL数据文件.索引文件,无法直接读取. ibdata是innodb引擎使用的 如果是使用myisam引擎 则 ...
- iOS 最新App提交上架流程及部分问题的解决方案2016.12.21,感谢原博主!!!
内容摘自http://www.cocoachina.com/bbs/3g/read.php?tid=330302,原博特别详细,下面我对部分地方进行了修改,主要是对在打包验证和上传的时候遇到的问题进行 ...
- 什么是Bash Shell的内建(build in)命令
1.什么是build in命令: shell内建命令是指bash(或其它版本)工具集中的命令.一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他 ...
- nginx配置限制同一个ip的访问频率
1.在nginx.conf里的http{}里加上如下代码: limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $s ...
- Hibernate 注解说明
转:http://blog.csdn.net/u012312373/article/details/46566081 1.类级别注解 @Entity 映射实体类 @Table 映 ...
- Oracle Day 08 游标与例外的总结
1.游标的使用(cursor) 基本格式: 定义游标: cursor 游标名 is select语句; 打开游标: open 游标名; loop(循环) fetch ... into ...; ...
- 301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云)
欢迎来到重庆SEO俱乐部:搜索引擎优化学习交流QQ群224306761. 承接:seo优化.网站建设.论坛搭建.博客制作.全网营销 博主可接:百度百家.今日头条.一点资讯等软文发布,有需要请联系PE! ...
- redis5--set的操作
Set集合类型(1)介绍redis的set是string类型的无序集合set元素最大可以包含(2的32次方-1)个元素关于set集合类型除了基本的添加删除操作,其它有用的操作还包含集合的取并集(uni ...
- 利用StringBuffer向字符串特定的重复子字符串插入数据
public class InsertDetail { public void insertInvoiceDetail(StringBuffer sb, String Label, String ...
- 架设自己的FTP服务器 Serv-U详细配置图文教程
转自:http://www.jb51.net/article/31635.htm 所有不是很要求安全的情况下是可以用serv_U的,当然我们也可以通过一些设置,保证serv_u安全运行.这里就分享下s ...