jQuery高级用法
一、jQuery实现文件上传
1.定义UI结构
2.验证是否选择了文件
3.向FormData中追加文件
4.使用jQuery发起上传文件的请求
示例代码:
<!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> <script src="/js文件/jquery-3.6.0.js"></script> </head> <body> <input type="file" id="file1"> <button id="butUpload">上传文件</button> </body> <script> $(function () { $('#btnUpload').on('click', function () { var files = $('#file1')[0].files if (files.length <= 0) { return alert('请选择文件后再上传') } var fd = new FormData() fd.append('avatar', files[0]) // 发起jQuery的AJAX请求,上传文件 $.ajax({ method: 'POST', url: 'http://www.liulongbin.top:3006/api/upload/avatar', data: fd, processData: false, contentType: false, success: function (res) { console.log(res); } }) }) }) </script> </html>
二、jQuery实现loading效果
1.ajaxStart(callback)
Ajax请求开始时,执行ajaxStart 函数。可以在 ajaxStart的callback中显示 loading效果,示例代码如下
注意:$(document).ajaxStart()函数会监听当前文档内所有的Ajax请求。
2.ajaxStop(callback)
Ajax请求结束时,执行 ajaxStop函数。可以在ajaxStop的callback中隐藏, loading 效果,示例代码如下:
<!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> <script src="/js文件/jquery-3.6.0.js"></script> </head> <body> <input type="file" id="file1"> <button id="butUpload">上传文件</button> <br> <img src="/img/1.jpg" alt="" style="display: none;" id="loading"> </body> <script> $(function () { // 监听到Ajax请求被发起了 $(document).ajaxStart(function () { $('#loading').show }) // 监听到Ajax完成的事件 $(document).ajaxStop(function () { $('#loading').hide() }) $('#btnUpload').on('click', function () { var files = $('#file1')[0].files if (files.length <= 0) { return alert('请选择文件后再上传') } var fd = new FormData() fd.append('avatar', files[0]) // 发起jQuery的AJAX请求,上传文件 $.ajax({ method: 'POST', url: 'http://www.liulongbin.top:3006/api/upload/avatar', data: fd, processData: false, contentType: false, success: function (res) { console.log(res); } }) }) }) </script> </html>