Jquery 中封装的Ajax和封装函数serializeObject和nprogress 进度条插件
warning:
这篇文章距离上次修改已过284天,其中的内容可能已经有所变动。
在这个问题中,你想要了解如何使用jQuery来封装Ajax请求,以及如何使用serializeObject
方法来序列化表单数据,并使用NProgress
进度条插件来显示请求的进度。
首先,我们来看一下如何封装Ajax请求:
function myAjax(url, type, data, successCallback, dataType = 'json') {
$.ajax({
url: url,
type: type,
data: data,
dataType: dataType,
beforeSend: function() {
NProgress.start(); // 请求开始时启动进度条
},
complete: function() {
NProgress.done(); // 请求完成时结束进度条
},
success: function(response) {
successCallback(response);
},
error: function(xhr, status, error) {
console.error("An error occurred: " + status + "\nError: " + error);
}
});
}
在这个封装中,我们在请求开始前启动进度条,并在请求完成后结束进度条。
接下来是serializeObject
方法的实现:
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
使用这个方法,你可以通过选择表单元素并调用.serializeObject()
来序列化表单数据为一个JavaScript对象。
最后,你需要确保在你的页面中引入了NProgress的CSS和JavaScript文件,以及jQuery库。
<!-- NProgress CSS file -->
<link rel="stylesheet" type="text/css" href="nprogress.css" />
<!-- jQuery library -->
<script src="jquery.min.js"></script>
<!-- NProgress JavaScript file -->
<script src="nprogress.js"></script>
在实际使用中,你可以这样调用封装好的myAjax
函数:
// 发送GET请求
myAjax('/api/data', 'GET', null, function(response) {
console.log(response);
});
// 发送POST请求,并序列化表单
$('#myForm').submit(function(e) {
e.preventDefault();
var formData = $(this).serializeObject();
myAjax('/api/submit', 'POST', formData, function(response) {
console.log(response);
});
});
这样,你就可以方便地使用myAjax
函数来发送Ajax请求,并且在请求过程中使用NProgress
显示进度。
评论已关闭