封装类似jQuery的ajax函数
来源:互联网 发布:计算圆周率的算法 编辑:程序博客网 时间:2024/06/05 16:25
经常使用jQuery的ajax 不明白里头大概的原理怎么行呢?
下面我们一起来简单的封装一些jq里的ajax 吧
//简易AJAx 封装
var $ = {
params:function(params){
var data="";
for(key in params){
data += key + '='+params[key]+'&';
}
// 将最后一个&字符截掉
return data.slice(0,-1);
},
//AJax 实例
ajax:function(options){
//实例化xmlhttpRequest,
var xhr = new XMLHttpRequest(),
//默认为get 方式
type = options.type ||'get',
// 默认请求路径
url = options.url || location.pathname,
// 格式化数据key=value&key=value
data = this.params(options.data),
callback = options.success;
if(type == 'get' ){
url = url +'?' +data;
data = null;
}
xhr.open(type ,url);
//当请求方式为get 情况,需要设置一个content-type
if(type =='post'){
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
}
// 发送请求主体
xhr.send(data);
//监听响应
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 && xhr.status ==200 ){
//获取响应类型
var contentType = xhr.getResponseHeader('Content-Type');
var data = xhr.responseText;
//解析json 检测ct里是否包含json 字样
if(contentType.indexOf('json') != -1){
// 解析json字符串
data = JSON.parse(data);
}
// 将数据传给回调回去
callback(data);
}else{
options.error('请求失败');
}
}
}
};
// 使用方式
// 调用工具函数
$.ajax({
type: 'post',
url: 'stars.php',
// 以对象形式传递数据会更加方便
data: {name: 'itcast', age: 10},
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
}
});
// 虽然和真正jq的源码还有很大的差距,不过能大概明白原理
// ,对真正理解ajax是有好处的。
下面我们一起来简单的封装一些jq里的ajax 吧
//简易AJAx 封装
var $ = {
params:function(params){
var data="";
for(key in params){
data += key + '='+params[key]+'&';
}
// 将最后一个&字符截掉
return data.slice(0,-1);
},
//AJax 实例
ajax:function(options){
//实例化xmlhttpRequest,
var xhr = new XMLHttpRequest(),
//默认为get 方式
type = options.type ||'get',
// 默认请求路径
url = options.url || location.pathname,
// 格式化数据key=value&key=value
data = this.params(options.data),
callback = options.success;
if(type == 'get' ){
url = url +'?' +data;
data = null;
}
xhr.open(type ,url);
//当请求方式为get 情况,需要设置一个content-type
if(type =='post'){
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
}
// 发送请求主体
xhr.send(data);
//监听响应
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 && xhr.status ==200 ){
//获取响应类型
var contentType = xhr.getResponseHeader('Content-Type');
var data = xhr.responseText;
//解析json 检测ct里是否包含json 字样
if(contentType.indexOf('json') != -1){
// 解析json字符串
data = JSON.parse(data);
}
// 将数据传给回调回去
callback(data);
}else{
options.error('请求失败');
}
}
}
};
// 使用方式
// 调用工具函数
$.ajax({
type: 'post',
url: 'stars.php',
// 以对象形式传递数据会更加方便
data: {name: 'itcast', age: 10},
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
}
});
// 虽然和真正jq的源码还有很大的差距,不过能大概明白原理
// ,对真正理解ajax是有好处的。
0 1
- 封装类似jQuery的ajax函数
- JavaScript Ajax封装 类似jQuery Ajax
- 自己封装的jquery ajax函数
- 封装类似jQuery的选择器
- 封装jQuery的ajax
- jquery ajax 请求函数封装
- jquery ajax调用函数封装
- jquery中ajax封装原理/封装jquery的ajax工具函数
- AJAX-jQuery中的AJAX封装函数
- AJAX函数的封装
- 封装的ajax函数
- jQuery封装的Ajax方法
- jQuery对AJAX的封装
- JQuery对Ajax的封装
- JQuery封装的ajax调用
- 基于jquery的ajax封装
- Jquery ajax的二次封装
- jQuery对Ajax的封装
- Android打造ListView万能适配器
- 60. Permutation Sequence
- Block如何避免self retain
- LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载怎么办?
- centos6.5配置静态ip
- 封装类似jQuery的ajax函数
- android studio创建assets目录并且利用webView加载其html(by 星空武哥)
- LeetCode 72. Edit Distance(编辑距离)
- [leetcode]【数组】81. Search in Rotated Sorted Array II
- SciTe 中文设置(解决乱码,中文界面)
- 日常笔记之【+“”】
- Python的多重继承和super
- Spring事务的传播行为和隔离级别
- 使用diskpart命令修复U盘分区