Проблема подачи содержимого файла в Internet Explorer
-
26-09-2019 - |
Вопрос
Я отправляю свой файл через jQuery, используя плагин jform.js и его работающий в Firefox, но когда я попробую его на файле IE8, правильно Shumbed, но элемент управления загрузкой файла скрывает и еще больше, когда я комментирую, т.е. Условие загрузки файла не хватает скрытия, но Когда я проверяю запрос .files [0] .ContentLength в моем контроллере у него есть 0 значение. Это мой код и что, возможно, я делаю не так? Я использую ASP.NET MVC и jQuery-1.4.2
var myform = document.createElement("form");
myform.style.display = "none"
myform.action = "/Media/AjaxSubmit";
myform.enctype = "multipart/form-data";
myform.method = "post";
var imageLoad;
var imageLoadParent;
if (document.all) {//IE
imageLoad = document.getElementById(fileId);
imageLoadParent = document.getElementById(fileId).parentNode;
myform.appendChild(imageLoad);
document.body.appendChild(myform);
}
else {//FF
imageLoad = document.getElementById(fileId).cloneNode(true);
myform.appendChild(imageLoad);
document.body.appendChild(myform);
}
$(myform).ajaxSubmit({ success: function (responseText) {
});
Решение 2
Решение простое, я просто добавляю, что контроль просмотра, когда он отвечает от функции ajaxsubmit и код следующим образом
$(myform).ajaxSubmit({ success: function (responseText) {
if (document.all) {//IE
imageLoadParent.appendChild(myform.firstChild);
}
else//FF
{
document.body.removeChild(myform);
}
Другие советы
Что такое бред до .ajaxSubmit
? Это выглядит как код с конца 90-х годов. Я бы порекомендовал вам просто использовать jQuery и не беспокоиться о перекрестных проблемах браузера:
$('form')
.attr('action', '/Media/AjaxSubmit')
.attr('method', 'post')
.attr('enctype', 'multipart/form-data')
.hide()
.append($('#' + fileId).clone())
.ajaxSubmit({
success: function(responseText) {
// ...
}
})
.appendTo('body');
Примечание: Харкодированное действие Действие выглядит некрасиво. Вы должны рассмотреть возможность использования HTML-помощников для генерации URL-адресов.