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

 更新时间:2016年06月21日 10:30:19   作者:WoodK  
这篇文章主要介绍了原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

由于项目中需要在提交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文件上传提交表单(推荐)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • vscode 对 typescript代码调试的步骤

    vscode 对 typescript代码调试的步骤

    在VS Code中,要对 TypeScript代码进行调试,需要先编译 TypeScript 代码为JavaScript代码,这篇文章主要介绍了vscode对typescript代码调试的方法,需要的朋友可以参考下
    2023-03-03
  • 利用js实现在浏览器状态栏显示访问者在本页停留的时间

    利用js实现在浏览器状态栏显示访问者在本页停留的时间

    本文为大家介绍下利用JavaScript实现在浏览器状态栏显示停留时间即在状态栏上显示访问者在本页停留的时间
    2013-12-12
  • 微信小程序日期选择器使用详解

    微信小程序日期选择器使用详解

    这篇文章主要为大家详细介绍了微信小程序日期选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JavaScript超过Number最大值的解决方案

    JavaScript超过Number最大值的解决方案

    在JavaScript中,Number类型是基于IEEE754双精度浮点数标准表示的,虽然在常见场景下非常高效,但在处理大数据时,Number类型存在显著的精度限制,在这些场景中,如何精确处理大数据和超大数字成为了一个重要的问题,所以本文给大家介绍了JavaScript超过Number最大值的解决方案
    2025-01-01
  • JavaScript中常用的五种数字千分位格式化方法

    JavaScript中常用的五种数字千分位格式化方法

    数字格式化是开发中经常遇到的任务,特别是在需要为数字添加千分位符或控制小数位数时,以下是几种常用的数字格式化方法,每种方法有其优缺点,适用于不同的需求场景,感兴趣的小伙伴跟着小编一起来看看吧
    2024-12-12
  • layUI使用layer.open,在content打开数据表格,获取值并返回的方法

    layUI使用layer.open,在content打开数据表格,获取值并返回的方法

    今天小编就为大家分享一篇layUI使用layer.open,在content打开数据表格,获取值并返回的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 详解微信小程序审核不通过的解决方法

    详解微信小程序审核不通过的解决方法

    这篇文章主要介绍了详解微信小程序审核不通过的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 前端面试的底气之实现一个深拷贝

    前端面试的底气之实现一个深拷贝

    最近学到一个有关深拷贝的实现方法,为加深印象,这里给大家分享一下,下面这篇文章主要给大家介绍了关于前端面试的底气之实现一个深拷贝的相关资料,需要的朋友可以参考下
    2022-05-05
  • 详解JavaScript逻辑And运算符

    详解JavaScript逻辑And运算符

    这篇文章主要介绍了JavaScript逻辑And运算符,在JavaScript中,逻辑 AND 运算符用双和号(&&)表示
    2015-12-12
  • jquery动态添加删除div 具体实现

    jquery动态添加删除div 具体实现

    这篇文章介绍了jquery动态添加删除div实现代码,有需要的朋友可以参考一下
    2013-07-07

最新评论