Ajax,ajax封装
/**
* Created by liyinghao on 2016/8/23.
*/
/*仿jQuery中的ajax方法,简单版实现;封装ajax的工具函数*/
/*
* 1 请求方式 type get post 默认是get方式
* 2.接口地址 url 都是地址 默认的是当前地址
* 3.是否异步 async true false 默认的true 异步请求
* 4.请求数据 data {}对象形式 默认是空对象
*
*
* 5.成功回调函数(成功需要做的事情) success
* 6.失败回调函数(失败需要做的事情) error
*
* 比如 发送前要做的事情 beforeSend
* */
window.$ ={
/* ajax:function(){
}*/
};
/*定义一个ajax工具函数*/
/*options 是一个对象*/
$.ajax =function(options){
/*如果你什么都没传呢?停止执行*/
/*if(options && typeof options == 'object'){
}*/
if(!options ||typeof options !='object')return fasle;
/*如果传了*/
var type = options.type ||'get';
var url = options.url || location.pathname;
/* false true "" false */
var async = options.async ===false?false:true;
/*需要传递的数据*/
var data = options.data ||{};
/*需要data转化成ajax传递数据的格式 {name:'',age:''} ===>>> name=gc&age=10 */
var dataStr ='';
for(key in data){
dataStr += key+'='+data[key]+'&';
};
/*str.slice(0,-1); 取到倒着数几个字符*/
dataStr = dataStr && dataStr.slice(0,-1);
/*ajax编程*/
/*初始化*/
var xhr =newXMLHttpRequest();
/*设置请求行*/
/*如果是get请求 参数是不是该拼接在url后面*/
xhr.open(type,type=='get'?url+'?'+dataStr:url,async);
/*设置请求头*/
if(type =='post'){
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
}
/*设置请求内容*/
xhr.send(type=='get'?null:dataStr);
/*响应*/
xhr.onreadystatechange =function(){
/*首先确定通讯完全完成*/
if(xhr.readyState ==4){
/*如果是成功的请求 status == 200 */
if(xhr.status ==200){
/*成功*/
/*知道后台想要返回什么数据类型 application/json;charset=utf-8*/
/*application/xml application/json text/html text/xml text/json text/css*/
var contentType = xhr.getResponseHeader('Content-Type');
var result =null;
if(contentType.indexOf('xml')>-1){
/*返回什么数据类型xml*/
result = xhr.responseXML;
}elseif(contentType.indexOf('json')>-1){
/*返回什么数据类型json*/
var data = xhr.responseText;
result = data && JSON.parse(data);
}else{
result = xhr.responseText;
}
/*执行成功回调函数*/
options.success && options.success(result);
}else{
/*失败*/
options.error && options.error({status:xhr.status,statusText:xhr.statusText});
}
}
}
};
/*get*/
$.get=function(options){
options.type ='get';
$.ajax(options);
}
/*post*/
$.post =function(options){
options.type ='post';
$.ajax(options);
} 来自为知笔记(Wiz)
Ajax,ajax封装的更多相关文章
- 原生态AJAX详解和jquery对AJAX的封装
AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...
- 【前端学习笔记04】JavaScript数据通信Ajax方法封装
//Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...
- 原生ajax与封装的ajax使用方法
当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...
- Ajax入门(二)Ajax函数封装
如果看了的我上一篇博客<Ajax入门(一)从0开始到一次成功的GET请求>的话,肯定知道我们已经完成了一个简单的get请求函数了.如下: 1234567891011121314151617 ...
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...
- jQuery-实现简单的Ajax请求封装
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...
- JQ中的Ajax的封装
1.认识JQ中ajax的封装 jQ 对于ajax的封装有两层实现:$.ajax 为底层封装实现:基于 $.ajax ,分别实现了$.get 与$.post 的高层封装实现: 2.Ajax的底 ...
- Ajax的封装。
封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用. 封装支持接收来 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- Ajax的封装,以及利用jquery的ajax获取天气预报
1.Ajax的封装 function ajax(type,url,param,sync,datetype,callback){//第一个参数是获取数据的类型,第二个参数是传入open的url,第三个是 ...
随机推荐
- 图解HTTP 读书笔记
1 了解Web及网络基础 1.1 HTTP/1.0 HTTP正式作为标准被公布实在1996年五月,版本命名为HTTP/1.0,记载于RFC1945.至今仍广泛使用在服务器端. RFC1945 – ...
- WinSCP
Safe, open-source file transfers WinSCP is an open-source, free SFTP, SCP, FTPS and FTP client for W ...
- vue项目中实现手势密码
思路: 本来应该全部都用canvas来实现的,但时间紧迫 写的时候只想着圆圈用li写,线用canvas,写到一半才想通,还好这一通下来比较顺利 第一步:页面中的9个点用v-for循环出来li,ul设置 ...
- HTMLtr 标签的 valign 属性
valign 属性规定表格行中内容的垂直对齐方式. <table width="100%" border="1"> <tr valign=&q ...
- tp5 之 "No input file specified
tp5 之 "No input file specified" 问题 通过"域名/模块/控制器/方法"这样的方式访问的时候,浏览器输出如下: 直接通过" ...
- ES6中的CLASS继承
ES6中的CLASS继承:https://www.jianshu.com/p/3d3d52b47762 es6 javascript的Class 类的继承:https://blog.csdn.net/ ...
- flink批处理中的source以及sink介绍
一.flink在批处理中常见的source flink在批处理中常见的source主要有两大类: 1.基于本地集合的source(Collection-based-source) 2.基于文件的sou ...
- SVD和SVD++
参考自:http://blog.csdn.net/wjmishuai/article/details/71191945 http://www.cnblogs.com/Xnice/p/4522671.h ...
- 比较map的value
Collection<CardInfo> values = splitCardInfo.getCardType().values();Iterator<CardInfo> it ...
- Spring 2.5配置文件详解(转)
http://book.51cto.com/art/201004/193743.htm 6.2.3 Spring 2.5配置文件详解 Spring配置文件是用于指导Spring工厂进行Bean生产. ...