原生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 字符串乘法
Aug 20 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
js简单的表格添加行和删除行操作示例
Mar 31 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
Bootstrap面板(Panels)的简单实现代码
Mar 17 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
JS中图片压缩的方法小结
Nov 14 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
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
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
Python使用numpy实现BP神经网络
2018/03/10 Python
Python实现图片拼接的代码
2018/07/02 Python
python对于requests的封装方法详解
2019/01/03 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python日志模块logbook使用方法
2019/09/19 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
Python新手学习装饰器
2020/06/04 Python
Python wordcloud库安装方法总结
2020/12/31 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
《雨霖铃》听课反思
2014/02/13 职场文书
《荷花》教学反思
2014/04/16 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
公司奖励通知
2015/04/21 职场文书
道歉的话怎么说
2015/05/12 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js