В настоящее время я работаю над сценарием загрузки файлов AJAX, который работает как шарм в Firefox, но не работает в IE.Поддержка jQuery AJAX для поддержки кроссбраузера
это основной HTML я использую:
<form >
<input type="file" name="FileFields" id="FileFields"/>
<button type="button" onclick="uploadFile();" id="uploadButton">Upload</button>
<ul id="files"/>
... other form elements ...
</form>
<div id="fileUploadDiv"/>
это функция uploadFile:
function uploadFile()
{
//we don't want more then 5 files uploaded
if($('#files li').size() >= 5)
{
return;
}
//disable the upload button
$('#uploadButton').attr('disabled','disabled');
//show loading animation
$('#files').append(
$('<li>')
.attr('id','loading')
.append(
$('<img>').attr('src','/images/loading.gif')
)
.addClass('loading')
);
//add all neccessary elements (the form and the iframe)
$('#fileUploadDiv').append(
$('<form action="/uploadFile" method="post" id="fileUploadForm">')
.attr('enctype','multipart/form-data')
.attr('encoding', 'multipart/form-data')
.attr('target', 'upload_frame')
.append(
$('#FileFields').clone()
.css('visibility','hidden')
)
.append(
$('<iframe>').attr('name','upload_frame')
.load(function(){finishedPostingFile();})
.attr('id','upload_frame')
.attr('src','')
.css({
'width':'0px',
'height':'0px',
'border':'0px none #fff'
})
)
);
//start uploading the file
$('#fileUploadForm').submit();
}
и finishedPostingFile() будет обратного вызова функции, как только IFrame завершил проводку/погрузки.
Теперь это работает как шарм в Firefox, но не работает в IE. Я уже понял, что IE нуждается в attr('encoding',...)
вместо attr('enctype',...)
, и я также попробовал его, не создавая форму и iframe на лету, написав эти элементы как простой html, что на самом деле не изменило ситуацию.
IE (IE8, чтобы быть конкретным, не проверял его в < 8) не дает ошибки, и анимация загрузки просто продолжает вращаться, без файла, который когда-либо загружается ... У кого-нибудь есть идея о том, как сделать эту работу?
Вы когда-нибудь получали хороший ответ? – camainc