1
我使用ajax提交瀏覽,上載並使用PHP處理文件的表單。我討厭標準的HTML輸入類型=「文件」按鈕(正如大多數人所做的那樣),所以使用了一個技巧來點擊我最終可以自定義的另一個按鈕(id =「fileSelect」)中的標準「瀏覽」按鈕。 Safari瀏覽器和其他瀏覽器的效果非常好,但使用IE,提交表單的ajax代碼行不會觸發。執行ajax代碼的其他元素(我在最後得到alert(「Ajax complete」)),但是「$(」#imageform「)。ajaxForm({target:'#preview'})。submit );」行在IE中不起作用。使用輸入類型文件提交Ajax表單
Ajax代碼:
$(document).ready(function()
{
$('#xfile').live('change', function() // when there is an even on the 'file' element (like file selected)
{
$("#preview").html(''); // clears the preview area
$("#preview").html('<img src="general_images/loading.gif" alt="Uploading...."/>'); // displays the loading
$("#imageform").ajaxForm({target: '#preview'}).submit();
alert ("Ajax complete");
});
});
和HTML代碼:
<div>
<button id="fileSelect" onclick="document.getElementById('xfile').click();">Insert Picture</button>
<form style="display: inline" id="imageform" name="imageform" action="upload_file_journal.php" method="post" target="_blank" enctype="multipart/form-data">
<input style="visibility: hidden" type='file' name='xfile' id='xfile'/
</form>
因此,JavaScript工作正常,如果它由本機輸入type =「文件」按鈕觸發,但不是當按鈕由fileSelect按鈕觸發時。我試過使用IE10,但它不起作用。我很好奇它爲什麼不觸發在jQuery代碼中提交。也許這只是一個深刻的IE實現問題,我不應該在意......只是迫使IE用戶使用原生按鈕。 – FredASL
是的,這是爲了我讀過的安全。根據我自己的經驗,您可以使用jquery和輔助按鈕打開文件輸入,但輸入不能按需使用。數據永遠不會讓它到服務器,看看這篇文章,它似乎顯示了我正在描述的修復,http://stackoverflow.com/questions/793014/jquery-trigger-file-input – QBM5