我創建了一個簡單的文件上傳頁面。爲了保持簡單,我避免使用iFrames來包含文件輸入。因此,文件提交會觸發頁面重新加載,因爲表單已提交。這是爲了在頁面上顯示上傳的文件名稱而需要的。文件名是通過jQuery中的AJAX調用獲取的。IE9在文件上傳後不調用ajax方法
一切就像在Chrome,火狐,歌劇,Safari在Mac和Windows魅力(我沒有測試過Linux,但我想它也能工作)
我的問題是,在IE9中,當我打開瀏覽器,ajax調用並顯示數據。但是一旦文件上傳完成,就停止工作。
爲了確保服務器在調試模式下啓動,並在服務方法中設置了斷點。只要沒有文件上傳,就會達到中斷點。
一旦文件上傳完畢(順便說一句),斷點不會到達。 IE9不調用服務方法,並且數據不再改變。即使導航到另一個頁面(google.com),並通過編寫URL再次加載頁面也無濟於事。
這是迄今爲止我在瀏覽器中看到的最奇怪的行爲:表單被提交併且文件被髮送,但沒有執行後續的ajax調用並且頁面沒有改變。但是,JavaScript的行爲就像進行了AJAX調用一樣。只是服務器不再涉及。
這是形式:
<form method="post" action="${pageContext.request.contextPath}/services/prepop/upload/csv"
id="fileUploadForm" enctype="multipart/form-data">
<div class="file-upload">
<input id="uploadedFile"
type="file"
name="uploadedFile"
onchange="submit()"/>
</div>
<input type="hidden" name="formId" value='{{formId}}'/>
<input type="hidden" name="contentId" value='{{id}}'/>
<input type="hidden" name="page" value='upload'/>
</form>
這是Ajax調用
app.log("getting the form files");
$.ajax({
url:"${pageContext.request.contextPath}/services/jsonrest/prepop/list",
type:"GET",
async:true,
data:[
{name:"formId", value:formId}
],
success:function (prepopContentList) {
app.log("the content file list was fetched with " + prepopContentList.length + " entries");
upload.populateEntryList(prepopContentList, $("#fileUploadList"));
}
});
最奇怪的事是,日誌條目出現在日誌,但總是以同樣的價值觀。在調試模式下查看內容證實了這一點。數組總是相同的。
沒有啓用彗星。這是一個普通的jQuery應用程序。
如果有人有線索。