原生js实现对Ajax的封装(仿jquery)
发布时间 - 2026-01-10 22:43:21 点击率:次前言

众所周知,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?xx=xx&aa=xx
var url = obj.url+"?"+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
# 封装
# 原生js封装的一些jquery方法(详解)
# 原生js仿jquery实现对Ajax的封装
# 详解JavaScript原生封装ajax请求和Jquery中的ajax请求
# JavaScript使用链式方法封装jQuery中CSS()方法示例
# 基于jquery封装的一个js分页
# JS链式调用的实现方法
# 学习JavaScript设计模式(链式调用)
# 原生js实现简单的链式操作
# javascript中的链式调用
# js实现封装jQuery的简单方法与链式操作详解
# 默认值
# 让我们
# 多个
# 要用
# 说到底
# 众所周知
# 回调
# 大家多多
# 默认为
# 使用频率
# 使用它
# url
# alert
# toData
# arr
# success
# function
# join
# push
# str
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
zabbix利用python脚本发送报警邮件的方法
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
三星网站视频制作教程下载,三星w23网页如何全屏?
开心动漫网站制作软件下载,十分开心动画为何停播?
Android使用GridView实现日历的简单功能
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
UC浏览器如何设置启动页 UC浏览器启动页设置方法
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何在阿里云购买域名并搭建网站?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何在阿里云虚拟服务器快速搭建网站?
如何构建满足综合性能需求的优质建站方案?
Android中AutoCompleteTextView自动提示
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
如何用花生壳三步快速搭建专属网站?
如何快速完成中国万网建站详细流程?
如何在腾讯云免费申请建站?
HTML 中如何正确使用模板变量为元素的 name 属性赋值
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
如何在阿里云ECS服务器部署织梦CMS网站?
深入理解Android中的xmlns:tools属性
Android okhttputils现在进度显示实例代码
常州企业网站制作公司,全国继续教育网怎么登录?
Laravel Fortify是什么,和Jetstream有什么关系
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
浅谈Javascript中的Label语句
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
python中快速进行多个字符替换的方法小结
Laravel如何创建自定义Artisan命令?(代码示例)
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
微信小程序 scroll-view组件实现列表页实例代码
昵图网官网入口 昵图网素材平台官方入口
如何在云主机上快速搭建网站?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
大连 网站制作,大连天途有线官网?
如何在IIS服务器上快速部署高效网站?
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
C#如何调用原生C++ COM对象详解
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
活动邀请函制作网站有哪些,活动邀请函文案?

