封装一个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);
};
最新文章
- Array类
- MapReduce中的分区方法Partitioner
- href=";javascript:void(0)";
- poj 2392 多重背包
- SSIS ->;>; Logging
- Nodejs学习之一 下载安装与部署nodejs
- Azure 媒体服务支持 DASH 实时传送流
- OpenRisc-35-基于orpsoc,eCos的sd card controller的测试实验
- 新浪微博。。openapi 分享 图画+ 写作
- ios 清除列表选中状态
- Image和字节数组互转
- ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查
- linux service 简单易懂贴
- web安全基础第一天
- http://www.layui.com/doc/modules/laydate.html实时通信\日期、==插件
- 什么是IaaS, PaaS和SaaS及其区别
- centos7下部署iptables环境纪录(关闭默认的firewalle)(转)
- jfinal关联查询给dto添加表结构以外的字段并返回的处理方式
- Job流程:提交MR-Job过程
- HDU 5303 Delicious Apples(思维题)
热门文章
- ubuntu开放防火墙端口
- spring使用jdbcTemplate和jdbcdaosupport和namedparameter
- sqlite增删改查
- drupal7 sql接口笔记
- centos7,yum安装的redis用systemctl无法启动
- Angular DirtyChecking(脏值检查) $watch, $apply, $digest
- hadoop MapReduce - 从作业、任务(task)、管理员角度调优
- scala调用外部命令
- ZUFE OJ 2145 05机关图
- SQLSERVER异机备份