南强小屋 Design By 杰米
前言
众所周知,jquery在我们日常开发中的使用频率非常高,与js相比,我们省去了冗长的获取元素的代码,不用考虑一些麻烦的兼容问题,更加方便的动画实现,以及更加方便的方法调用让我们觉得jquery真是越用越舒服。但是jquery说到底还是对js的封装,我们不光要用的舒服还要深入理解其中的原理,这样才能更好的使用它。
首先我们封装的函数为了能实现可传入无限多个参数,在使用我们即将封装的函数时,需要使用对象进行传参,形式如下:
//data作为参数传入我们下面封装的函数
var data = {
//数据
user:"yonghu1",
pass:'12345',
age:18,
//回调函数
success:function (data){
alert(data);
}
}
函数封装:
1、封装一个辅助函数,把传进来的对象拼接成url的字符串
function toData(obj){
if (obj == null){
return obj;
}
var arr = [];
for (var i in obj){
var str = i+"="+obj[i];
arr.push(str);
}
return arr.join("&");
}
2、封装Ajax
function ajax(obj){
//指定提交方式的默认值
obj.type = obj.type || "get";
//设置是否异步,默认为true(异步)
obj.async = obj.async || true;
//设置数据的默认值
obj.data = obj.data || null;
if (window.XMLHttpRequest){
//非ie
var ajax = new XMLHttpRequest();
}else{
//ie
var ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
//区分get和post
if (obj.type == "post"){
ajax.open(obj.type,obj.url,obj.async);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = toData(obj.data);
ajax.send(data);
}else{
//get test.php""+toData(obj.data);
ajax.open(obj.type,url,obj.async);
ajax.send();
}
ajax.onreadystatechange = function (){
if (ajax.readyState == 4){
if (ajax.status>=200&&ajax.status<300 || ajax.status==304){
if (obj.success){
obj.success(ajax.responseText);
}
}else{
if (obj.error){
obj.error(ajax.status);
}
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
js,Ajax,封装
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无原生js实现对Ajax的封装(仿jquery)的评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。