現今的主流瀏覽器由於ajax提交form表單無法把文件類型數據提交到后台,供后台處理,可是開發中由於某些原因又不得不用ajax提交文件,解決方案:
下面說說 jquery.form.min.js 插件,它是一款優秀的Ajax表單插件,我們可以非常容易的使用它處理表單控件的值,清空和復位表單控件,附件上傳,以及完成Ajax表單提交。jquery.form.min.js 有兩個核心方法ajaxForm()和ajaxSubmit(),下面以實例來簡單說明其提交file文件方式:
<!-- Modal:更新授權 --> <div class="modal fade" id="update-authorization-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> × </button> <h4 class="modal-title"> 更新授權 </h4> </div> <form id="update-authorization-modal-form" class="form-horizontal" action=""> <div class="modal-body"> <div class="form-group row"> <label class="col-sm-3 col-md-3 col-lg-3 col-xl-3 control-label font-normal align-right">授權文件:</label> <div class="col-sm-7 col-md-7 col-lg-7 col-xl-7"> <div class="file-input-container"> <input type="file" class="form-control file-input" id="update-authorization-modal-file" name="updateAuthorizationModalFile" /> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">關閉</button> <button type="submit" class="btn btn-success">發送</button> </div> </form> </div> </div> </div>
<script src="./static/libs/jquery-form/jquery.form-3.45.0.js"></script>
$('#update-authorization-modal-form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
excluded: [":disabled"],
fields: {
updateAuthorizationModalFile: {
message: '授權文件無效',
trigger: "change",
validators: {
notEmpty: {
message: '授權文件不能為空'
},
file: {
extension: 'war,rar,tar,zip,gz,bz2,deb',
mimeTypes: '.war,.rar,.tar,.zip,.gz,.bz2,.deb',
message: '文件類型為.war、.rar、.tar、.zip、.gz、.bz2、.deb'
}
}
}
}
}).on('success.form.bv', function (e) {
e.preventDefault();
var options = {
url: '/bmpf/softmng/software/add_software_package/',
success: showResponse,
dataType: "json"
};
function showResponse(response, status) {
if (response.ret) {
toastr.success("更新授權成功", "成功提示");
$('#update-authorization-modal-form')[0].reset();
$('#update-authorization-modal-form').data("bootstrapValidator").resetForm();
setTimeout(function () {
$("#update-authorization-modal").modal("hide");
}, 1000);
//$softTable.bootstrapTable("refresh");
}
else {
toastr.error(response.errMsg, "錯誤提示");
$('#update-authorization-modal-form').bootstrapValidator('disableSubmitButtons', false);
}
}
$('#update-authorization-modal-form').ajaxForm(options);
});
