原生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 】
相关推荐:
java中使用zxing批量生成二维码立牌
,怎么在广州志愿者网站注册?
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Python进程池调度策略_任务分发说明【指导】
装修招标网站设计制作流程,装修招标流程?
如何在万网利用已有域名快速建站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
node.js报错:Cannot find module 'ejs'的解决办法
JavaScript如何实现继承_有哪些常用方法
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel如何创建自定义Facades?(详细步骤)
Laravel如何实现用户密码重置功能?(完整流程代码)
如何在 React 中条件性地遍历数组并渲染元素
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
简单实现Android验证码
如何在云虚拟主机上快速搭建个人网站?
使用C语言编写圣诞表白程序
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何基于云服务器快速搭建个人网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何用IIS7快速搭建并优化网站站点?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
黑客入侵网站服务器的常见手法有哪些?
在Oracle关闭情况下如何修改spfile的参数
php打包exe后无法访问网络共享_共享权限设置方法【教程】
如何在阿里云ECS服务器部署织梦CMS网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
详解vue.js组件化开发实践
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何确认建站备案号应放置的具体位置?
如何自定义建站之星模板颜色并下载新样式?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
如何在香港服务器上快速搭建免备案网站?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何在万网自助建站平台快速创建网站?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
网站优化排名时,需要考虑哪些问题呢?
Python文本处理实践_日志清洗解析【指导】
详解MySQL数据库的安装与密码配置

