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,第三个是 ...
随机推荐
- jenkins-参数化构建插件:Choice Parameter
参考: 谢谢大佬的总结: https://www.cnblogs.com/zhaojingyu/p/9862371.html 使用方式 step1: 添加参数,选择Choice Parameter,并 ...
- 深入浅出HashMap
/** *@ author ViVi *@date 2014-6-11 */ Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复习一下.希望通过仪器讨论.共同提高~ 1 ...
- mysql linux下安装部署
一.安装简介 用户名:mysql安装目录:/usr/local/mysql-5.5数据库目录:/data/mysql/data源码包:mysql-5.5.28.tar.gz 二.安装准备 a.vi / ...
- 18. Jmeter-取样器二
jmeter-sampler介绍与使用 JMS Point-to-Point JMS Publisher JMS Subscriber JSR223 Sampler JUnit Request Jav ...
- 解决MVC中textarea出现多余空格的问题
public static MvcHtmlString FixedTextAreaFor<TModel, TProperty>(this HtmlHelper<TModel> ...
- System.Net.Mail.SmtpException:不允许使用邮箱名称.
使用SmtpClient发送邮件的时候,出现了如题错误. 解决方案: 将 SmtpClient.UseDefaultCredentials 属性设置为 true . 官方文档说明: Some SM ...
- Mac 安装cnpm
1.先安装node node的下载地址:http://nodejs.cn/download/ 这个没什么好说的,安装完成后测试一下,在终端输入:node -v 这时候就可以看到安装的nod ...
- WPF可视对象变换(RenderTransform)-----RotateTransform、TranslateTransform、ScaleTransform
前言:对于可是元素,我们常见有三种变化,旋转.平移.面积 一. 旋转(RotateTransform) <RotateTransform CenterX="></Rota ...
- win10下安装Ubuntu后,启动时没有win10选项解决方法
通过在ubuntu里修改启动引导,解决. 1.进入Ubuntu系统,Ctrl+alt+t进入终端,输入以下命令即可 sudo gedit /etc/default/grub 2.在打开的gedit编辑 ...
- Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
问题现象:今天部署代码的时候发现,在beta环境可以正常部署,但是到了test环境就一直不成功,我以为是环境问题,就重新部署,但是没效,看了看日志发现问题是:Caused by: java.lang. ...