首页 前端知识 6.jQuery中的Ajax上传文件

6.jQuery中的Ajax上传文件

2024-06-09 09:06:22 前端知识 前端哥 395 293 我要收藏

目录

1  上传文件

2  loading效果


1  上传文件

后端接到数据后保存在upload_file文件夹下

前端依然使用FormData处理文件

contentType:false的意思是 使用FormData默认的Content-Type值

processData:false的意思是 不对FormData中的数据进行url编码,而是将FormData数据原样发送到服务器

2  loading效果

需要先搞一个这样的gif

让其在上传开始时显示,其余时间不显示

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
img {
display:none;
width:200px;
height:200px;
}
</style>
</head>
<body>
<input type="file">
<button>上传文件</button>
<img src="loading.gif" alt="">
</body>
<script src="../../jquery-3.6.1.min.js"></script>
<script>
$(document).ajaxStart(function() {
$('img').show()
})
$(document).ajaxStop(function() {
$('img').hide()
})
$('button').on('click',function() {
files = $('input')[0].files
if (files.length <= 0) {
return alert('请选择要上传的文件')
}
FormData_obj = new FormData()
FormData_obj.append('file',files[0])
$.ajax({
type:'POST',
url:'http://127.0.0.1:5000/upload',
data:FormData_obj,
contentType:false,
processData:false,
success:function(res) {
console.log(res)
}
})
})
</script>
</html>
复制

Ajax请求开始时会执行ajaxStart(),自jQuery1.8后,ajaxstart()只能给document,因为只能给document所以ajaxStart会监听当前document内所有的Ajax请求

Ajax请求结束时会执行ajaxStop()

除此之外还有很多请求的方法,详细可以看一下文档 jQuery 参考手册 - Ajax

上传过程中会显示loading.gif

上传完成后会消失

转载请注明出处或者链接地址:https://www.qianduange.cn//article/11657.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!