原生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整除实现代码
Nov 23 Javascript
JavaScript设计模式之外观模式实例
Oct 10 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
第十篇BootStrap轮播插件使用详解
Jun 21 Javascript
总结AngularJS开发者最常犯的十个错误
Aug 31 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
微信小程序上传图片实例
May 28 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
jquery实现的分页显示功能示例
Aug 23 jQuery
Node.js中文件系统fs模块的使用及常用接口
Mar 06 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中与数组相关的函数
2007/03/22 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Django中url的反向查询的方法
2018/03/14 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
酒店人事专员岗位职责
2013/12/19 职场文书
求职简历中自我评价
2014/01/28 职场文书
校园文化建设方案
2014/02/03 职场文书
售后服务承诺书范文
2014/03/26 职场文书
《云房子》教学反思
2014/04/20 职场文书
婚前保证书
2014/04/29 职场文书
三八节标语
2014/06/27 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
领导班子整改方案
2014/10/25 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
实习指导老师意见
2015/06/04 职场文书
公司员工离职感言
2015/08/03 职场文书
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android