使用jQuery的Ajax上傳檔案

Ted Yan
yanweilun
Published in
Jul 10, 2021

只顯示按鈕,按鈕觸發click事件之後,再觸發input click

HTML部分

<!--實際選擇檔案的 Input Element-->
<input type="file" id="importFile" style="display: none" >
<!--實際顯示的按鈕-->
<button id="importButton" class="btn btn-success float-right">上傳檔案</button>

JS部分

//按鈕點擊時,觸發input click事件
$("#importBtn").click(function(){
$('#importFile').trigger('click');
});
//選取檔案完畢後的動作
$('#importFile').change(function(){
let formData = new FormData();
formData.append('import_file', this.files[0]);
$.ajax({
url: "YOUR_API_URL",
method: 'POST',
processData: false,
contentType: false,
data: formData,
})
.done(function(data, textStatus, jqXHR){
if(data.status !== 'success'){
alert(data.message);
}
dataGrid.refresh(true);
})
.fail(function(jqXHR, textStatus, errorThrown ) {
console.log("status:"+textStatus+" err:"+ errorThrown);
alert("匯入失敗");
})
.always(function(){
//在done與fail之後執行
});
});

參考 jQuery官方MDN

--

--

Ted Yan
yanweilun

網站工程師,使用過的程式語言有PHP、Javascript、Golang、C#,使用過的Framwork有Laravel、Vue、React Native、Gin,資料庫以MySQL為主,也曾接觸Elastic Search、Docker、AWS與GCP相關服務與應用