欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

$.ajax 文件進度條

張越彬1年前8瀏覽0評論

本文將介紹使用$.ajax文件上傳時如何顯示進度條。在實際開發中,經常會遇到需要上傳文件的需求,而且通常需要顯示給用戶上傳的進度,以提高用戶體驗。$.ajax是jQuery中一個非常常用的方法,可以實現異步請求,包括文件上傳。本文將通過幾個實例,展示如何結合$.ajax和進度條插件,實現文件上傳時的進度顯示。

第一個例子是使用jQuery插件jQuery File Upload來實現文件上傳。首先需要引入相關的CSS和JS文件:

<link rel="stylesheet" >
<link rel="stylesheet" >
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-file-upload/9.12.0/js/jquery.fileupload.js"></script>

接著,可以使用如下的HTML代碼來創建一個文件上傳表單:

<form id="fileUploadForm" action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit" class="btn btn-primary">上傳</button>
</form>

然后,在JavaScript代碼中,我們使用$.ajax方法來處理文件上傳的請求。可以通過設置xhr的upload屬性來監聽上傳進度,代碼如下:

$('#fileUploadForm').fileupload({
dataType: 'json',
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('.progress .progress-bar').css(
'width',
progress + '%'
);
}
});

在上述代碼中,progressall事件會在上傳進度發生變化時觸發,通過計算已上傳的字節數與總字節數的比例,來更新進度條的寬度。可以在HTML中添加如下的代碼來顯示進度條:

<div class="progress">
<div class="progress-bar progress-bar-striped active" role="progressbar"
aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
</div>
</div>

通過上述代碼,上傳文件時會顯示一個進度條,可以實時顯示上傳進度。用戶體驗明顯提升。

除了使用jQuery插件外,也可以使用原生的JavaScript和HTML5的FormData對象來實現文件上傳并顯示進度條。首先,創建一個文件上傳表單:

<form id="fileUploadForm" action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit" class="btn btn-primary">上傳</button>
</form>

然后,在JavaScript代碼中,使用FormData對象來處理文件上傳的請求,并監聽upload的progress事件來更新進度條的寬度:

$('#fileUploadForm').submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: $(this).attr('action'),
type: "POST",
data: formData,
processData: false,
contentType: false,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100;
$('.progress .progress-bar').css("width", percentComplete + '%');
}
}, false);
return xhr;
},
success: function(res){
// 上傳成功的處理邏輯
},
error: function(res){
// 上傳失敗的處理邏輯
}
});
});

在上述代碼中,創建FormData對象,并使用$.ajax方法來發送文件上傳請求。通過設置xhr的upload屬性來監聽上傳進度,并動態更新進度條寬度。

綜上所述,通過結合$.ajax和進度條插件,可以實現文件上傳時的進度顯示。無論是使用jQuery插件還是原生的JavaScript和HTML5,都可以輕松地實現這一功能。這對于用戶體驗的提升來說非常重要。