封装一个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 ...
随机推荐
- Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介
最近在学习Dojo,但样式问题真是头疼呀,虽然清新的淡蓝色很是减缓眼睛的疲劳,但这个扁平化简约风盛行的年代,光是清新的拟物已经满足不了群众的需求了,所以就在这样的需求下,我知道了bootstrap f ...
- centos php nginx 添加到service
1. nginx A. # vi /etc/init.d/nginx B. #!/bin/sh # Comments to support chkconfig on RedHat Linux # ch ...
- matlab,xls转换为mat文件
b=xlsread('iris_data.xls');save iris_data.mat b
- javaweb之session过期验证
session过期判断的基本思想:用户登录成功后,将用户账号信息保存在session中,然后几乎每次执行命令都要经过过滤器,过滤器检查session中是否存在账号,若不存在, 则返回登录页面,反之正常 ...
- set, list 和map知识总结
set就是集,无序,不可重复 举例:HashSet,LinkedHashSet List是映射,通过键值对存储,无序,不可重复 举例:HashMap,HashTable,LinkedHashMap 在 ...
- 树莓派+Android Things
在开始之前 谷歌前不久发布了Android Things面向物联网的系统,用意是想让android开发者用原来开发app的方式开发硬件相关的应用,扩展了android开发的方向和前景,而谷歌的Andr ...
- php 中文转拼音首字母问题
<?php /* 中文汉字转拼音首字母的PHP简易实现方法. 要求: 只能是GB2312码表里面中文字符 转换得到字符串对应的拼音首字母大写. 用法: echo zh2py::conv('Chi ...
- MapReduce库类
Hadoop除了可以让开发人员自行编写map函数和reduce函数,还提供一些常用函数(mapper.reducer和partitioner)的类库,这些类位于 org.apache.hadoop.m ...
- 把Excel工作簿的每个工作表提取出来保存为新工作簿
平台:MS office 2010 任务:有个excel工作簿,其中有上百个工作表,要求把每一个工作表全部保存为新工作簿,如果一个一个复制出来太傻了,可以用excel自带的VB解决. 方法:打开工作簿 ...
- selenium中的webdriver定位元素失败的常见原因
自动化测试中经常会出现无法定位元素的情况,报selenium.common.exceptions.NoSuchElementException错误 Frame/Iframe原因定位不到元素: 这个是最 ...