使用原生js写ajax实例(推荐)
发布时间 - 2026-01-11 01:32:14 点击率:次实例如下:
// 使用原生js 封装ajax
// 兼容xhr对象
function createXHR(){
if(typeof XMLHttpRequest != "undefined"){ // 非IE6浏览器
return new XMLHttpRequest();
}else if(typeof ActiveXObject != "undefined"){ // IE6浏览器
var version = [
"MSXML2.XMLHttp.6.0",
"MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp",
];
for(var i = 0; i < version.length; i++){
try{
return new ActiveXObject(version[i]);
}catch(e){
//跳过
}
}
}else{
throw new Error("您的系统或浏览器不支持XHR对象!");
}
}
// 转义字符
function params(data){
var arr = [];
for(var i in data){
arr.push(encodeURIComponent(i) + "=" + encodeURIComponent(data[i]));
}
return arr.join("&");
}
// 封装ajax
function ga_ajax(obj){
var xhr = createXHR();
obj.url = obj.url + "?rand=" + Math.random(); // 清除缓存
obj.data = params(obj.data); // 转义字符串
if(obj.method === "get"){ // 判断使用的是否是get方式发送
obj.url += obj.url.indexOf("?") == "-1" ? "?" + obj.data : "&" + obj.data;
}
// 异步
if(obj.async === true){
// 异步的时候需要触发onreadystatechange事件
xhr.onreadystatechange = function(){
// 执行完成
if(xhr.readyState == 4){
callBack();
}
}
}
xhr.open(obj.method,obj.url,obj.async); // false是同步 true是异步 // "demo.php?rand="+Math.random()+"&name=ga&ga",
if(obj.method === "post"){
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(obj.data);
}else{
xhr.send(null);
}
// xhr.abort(); // 取消异步请求
// 同步
if(obj.async === false){
callBack();
}
// 返回数据
function callBack(){
// 判断是否返回正确
if(xhr.status == 200){
obj.success(xhr.responseText);
}else{
obj.Error("获取数据失败,错误代号为:"+xhr.status+"错误信息为:"+xhr.statusText);
}
}
}
var html = document.getElementsByTagName("html")[0];
html.onclick = function(){
ga_ajax({
"method" : "post",
"url" : "demo.php",
"data" : {
"name" : "gao",
"age" : 100,
"num" : "12346&598"
},
"success" : function(data){
alert(data);
},
"Error" : function(text){
alert(text);
},
"async" : false
});
}
以上这篇使用原生js写ajax实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 原生js写ajax
# 原生js实现ajax方法(超简单)
# 原生JS简单实现ajax的方法示例
# 给大家
# 您的
# 希望能
# 不支持
# 这篇
# 错误信息
# 小编
# 跳过
# 大家多多
# 判断是否
# XMLHttp
# throw
# lt
# length
# catch
# join
# encodeURIComponent
# amp
# obj
# ga_ajax
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
进行网站优化必须要坚持的四大原则
Laravel如何配置和使用缓存?(Redis代码示例)
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
如何构建满足综合性能需求的优质建站方案?
Laravel如何实现多对多模型关联?(Eloquent教程)
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
Laravel如何使用模型观察者?(Observer代码示例)
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何快速搭建安全的FTP站点?
iOS发送验证码倒计时应用
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel如何配置Horizon来管理队列?(安装和使用)
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
网站制作企业,网站的banner和导航栏是指什么?
Laravel如何使用Eloquent进行子查询
如何用狗爹虚拟主机快速搭建网站?
如何用景安虚拟主机手机版绑定域名建站?
如何用y主机助手快速搭建网站?
实例解析angularjs的filter过滤器
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
详解vue.js组件化开发实践
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Python文件操作最佳实践_稳定性说明【指导】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何在IIS中新建站点并配置端口与IP地址?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
敲碗10年!Mac系列传将迎来「触控与联网」双革新
如何彻底删除建站之星生成的Banner?
如何在阿里云完成域名注册与建站?
如何在自有机房高效搭建专业网站?
中山网站制作网页,中山新生登记系统登记流程?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何用西部建站助手快速创建专业网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
Android GridView 滑动条设置一直显示状态(推荐)
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
如何快速上传建站程序避免常见错误?
如何在云主机快速搭建网站站点?
Laravel distinct去重查询_Laravel Eloquent去重方法
JS经典正则表达式笔试题汇总
如何在建站之星网店版论坛获取技术支持?
Android中AutoCompleteTextView自动提示
Swift开发中switch语句值绑定模式

