原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)


Posted in Javascript onJune 21, 2016

由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法。

jQuery的ajax普通封装

var ajaxFn = function(uri, data, cb) {
$.ajax({
url: uri,
type: 'POST',
dataType: 'json',
data: data,
})
.done(cb)
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
}

原生ajax封装,设置header,传json

var ajaxHdFn = function(uri, data, cb) {
var getXmlHttpRequest = function() {
if (window.XMLHttpRequest) {
//主流浏览器提供了XMLHttpRequest对象
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
//低版本的IE浏览器没有提供XMLHttpRequest对象
//所以必须使用IE浏览器的特定实现ActiveXObject
return new ActiveXObject("Microsoft.XMLHttpRequest");
}
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
//获取成功后执行操作
//数据在xhr.responseText
var resJson = JSON.parse(xhr.responseText)
cb(resJson);
}
};
xhr.open("post", uri, true);
xhr.setRequestHeader("DeviceCode", "56");
xhr.setRequestHeader("Source", "API");
xhr.setRequestHeader("Authentication", "72b32a1f754ba1c09b3695e0cb6cde7f");
xhr.setRequestHeader("Content-Type", "application/json");
var dataStr = JSON.stringify(data);
xhr.send(dataStr);
}

原生ajax封装,设置header,传json

var ajaxStrFn = function(uri, data, cb) {
var getXmlHttpRequest = function() {
if (window.XMLHttpRequest) {
//主流浏览器提供了XMLHttpRequest对象
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
//低版本的IE浏览器没有提供XMLHttpRequest对象
//所以必须使用IE浏览器的特定实现ActiveXObject
return new ActiveXObject("Microsoft.XMLHttpRequest");
}
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
//获取成功后执行操作
//数据在xhr.responseText
var resJson = JSON.parse(xhr.responseText)
cb(resJson);
}
};
xhr.open("post", uri, true);
xhr.setRequestHeader("DeviceCode", "56");
xhr.setRequestHeader("Source", "API");
xhr.setRequestHeader("Authentication", "72b32a1f754ba1c09b3695e0cb6cde7f");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
var dataStr = '';
for (var i in data) {
if (dataStr) {
dataStr += '&';
}
dataStr += i + '=' + data[i];
}
xhr.send(dataStr);
}

原生ajax封装,设置header,传上传excel文件,提交表单

var ajaxFormFn = function(uri, formObj, cb) {
console.log('formObj---', formObj);
var getXmlHttpRequest = function() {
if (window.XMLHttpRequest) {
//主流浏览器提供了XMLHttpRequest对象
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
//低版本的IE浏览器没有提供XMLHttpRequest对象
//所以必须使用IE浏览器的特定实现ActiveXObject
return new ActiveXObject("Microsoft.XMLHttpRequest");
}
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
//获取成功后执行操作
//数据在xhr.responseText
var resJson = JSON.parse(xhr.responseText)
cb(resJson);
}
};
xhr.open("post", uri, true);
xhr.setRequestHeader("DeviceCode", "56");
xhr.setRequestHeader("Source", "API");
xhr.setRequestHeader("Authentication", "72b32a1f754ba1c09b3695e0cb6cde7f");
xhr.onload = function() {
console.log("上传完成!");
};
xhr.send(formObj);
}

导入的实现部分是后端的事情。

我们这里需要提交一个excel文件,使用ajax。

并且需要设置ajax的头信息。所以我们不使用封装好的插件。用原生js来封装一个ajaxFormFn() 方法。

这里用到两个对象:

第一个对象:FormData

第二个对象:XMLHttpRequest

目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹....

有了这两个对象,我们可以真正的实现Ajax方式上传文件。

以上所述是小编给大家介绍的原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript globalStorage类代码
Jun 04 Javascript
一些技巧性实用js代码小结
Oct 14 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
巧用canvas
Jan 21 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
基于Swiper实现移动端页面图片轮播效果
Dec 28 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
vue实现倒计时功能
Mar 24 Vue.js
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 #Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 #Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 #Javascript
纯JS前端实现分页代码
Jun 21 #Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 #Javascript
jQuery代码性能优化的10种方法
Jun 21 #Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 #Javascript
You might like
IStream与TStream之间的相互转换
2008/08/01 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
babel的使用及安装配置教程
2018/02/22 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
详解django中自定义标签和过滤器
2017/07/03 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python使用configparser库读取配置文件
2020/02/22 Python
使用python求解二次规划的问题
2020/02/29 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
struct和class的区别
2015/11/20 面试题
应届生自荐信范文
2014/02/21 职场文书
入学申请自荐信范文
2014/02/26 职场文书
园艺师求职信
2014/04/27 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang