我可以從下面的表單上傳文件,從文件選擇器中選擇一個文件。但問題是,當我嘗試再次使用同一個文件提交表單時,它什麼都不做。表單上傳文件一次,但是當我再次上傳同一個文件時它不能在同一個文件上工作
我從文件選擇器中選擇一個文件,上傳它。我再次選擇相同的文件,然後我無法再次上傳。但是如果我在嘗試其他文件後上傳文件,則可以再次上傳相同的文件。
下面的代碼有什麼問題。
我已經包含jQuery的腳本和html的窗體。我真的不明白他們出了什麼問題。
$(document).ready(function() {
$("#datauploadbtn").on('click', function() {
$('#datafile').trigger('click');
});
$('#datafile').change(function(e) {
//var reg=/(.txt)$/;
//if (!reg.test($("#myFile").val())) {
// \t alert('Only .txt file extension allowed!');
// return false;
//} else {
$("#datafiletxt").val($("#datafile").val());
if ($("#datafiletxt").val() == '') {
alert('Select a file to upload');
return false;
} else {
$('#dataform').submit();
e.preventDefault();
}
});
});
$(function() {
var bar = $('.barTest');
var percent = $('.percentTest');
var status = $('#statusTest');
$('#dataform').ajaxForm({
success: function(data) {
console.log(data);
$('#percentTest').css('visibility', 'hidden');
$('#percentTest').css('color', ' white');
$('#barTest').css('background-color', 'white');
$('#statusTest').css('color', 'white');
$('#progressTest').css('border', '1px solid white');
$('#percentSpan').css('visibility', 'hidden');
$('#statusSpan').css('visibility', 'hidden');
//status.empty();
alert('Successfully uploaded!');
},
beforeSend: function() {
$('#percentTest').css('visibility', 'visible');
$('#percentTest').css('color', ' black');
$('#barTest').css('background-color', '#B4F5B4');
$('#statusTest').css('color', 'orange');
$('#progressTest').css('border', '1px solid #ddd');
$('#percentSpan').css('visibility', 'visible');
$('#statusSpan').css('visibility', 'visible');
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal);
console.log(percentVal);
}
});
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form action="ajaxasync" enctype="multipart/form-data" method="post" name="dataform" id="dataform">
<input type="button" value="Data file" id="datauploadbtn" name="datauploadbtn" style="width:100px; font:12px 'Arial'; font-weight:bold; height:30px; background:lightblue;" />
<input type="text" id="datafiletxt" style="width:260px; font:12px 'Arial'; font-weight:bold; height:27px;" />
<input type="file" name="datafile" id="datafile" style="visibility:hidden;" />
</form>
<div id="progressTest" class="progressTest">
\t <div id="barTest" class="barTest"></div >
\t <div id="percentTest" class="percentTest" style="visibility:hidden;"></div>
</div>
<div id="statusTest" style="font:11px 'Arial'; color: orange;">
\t <span id="statusSpan" style="visibility:hidden;">
\t \t File uploading in progress... <br>
\t \t Please wait!
\t </span>
</div>
這很可能是一個緩存問題。我建議你在瀏覽器調試控制檯中檢查第二個請求的響應代碼。很可能你會得到像「沒有改變」的東西,因此同樣的請求不會再次發送。在這種情況下,您必須將http標頭添加到回覆中,以防止響應被緩存。 – arkascha 2014-12-07 16:58:21
我試過Chrome控制檯,但我什麼也沒看到。你能告訴我什麼是HTTP標頭嗎? – user122358 2014-12-07 17:02:54
我可以建議你簡單地閱讀一些關於「http頭文件」的文檔嗎? – arkascha 2014-12-07 17:06:28