مشكلة إرسال محتوى الملف في Internet Explorer
-
26-09-2019 - |
سؤال
أنا أقدم ملفي من خلال jQuery باستخدام مكون الإضافي JForm.js وعمله في Firefox ، لكن عندما أحاول على ملف IE8 ، يتم إخفاء ملف تحكم الملف بشكل صحيح ولكن يتم إخفاء المزيد من التحكم عندما أتحقق من request.files [0]. الطول في وحدة التحكم الخاصة بي ، يكون له قيمة 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
؟ يبدو وكأنه رمز من نهاية التسعينيات. أوصيك ببساطة باستخدام 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.
لا تنتمي إلى StackOverflow