Javascript FormData未定义-Firefox 3.6.28替代版本
我有一项伟大的工作,必须完成一项原本交给承包商但从未完成的工作。这不是问题,但是我现在被告知系统必须支持Firefox 3.6!不太好,但这不是我到现在都会失眠的事!系统有一个Ajax功能,它使用FormData对象,然后上传一个文档(通常是PDF)。我已经通过Firefox3.6运行了这个程序,我得到了以下信息 “未定义FormData”Javascript FormData未定义-Firefox 3.6.28替代版本,javascript,jquery,form-data,Javascript,Jquery,Form Data,我有一项伟大的工作,必须完成一项原本交给承包商但从未完成的工作。这不是问题,但是我现在被告知系统必须支持Firefox 3.6!不太好,但这不是我到现在都会失眠的事!系统有一个Ajax功能,它使用FormData对象,然后上传一个文档(通常是PDF)。我已经通过Firefox3.6运行了这个程序,我得到了以下信息 “未定义FormData” var formData=新的formData($('form')[0]) 这很好,因为我可以看到这个对象不受支持,我只需要使用不同的方法或收集方式。。。我
var formData=新的formData($('form')[0]) 这很好,因为我可以看到这个对象不受支持,我只需要使用不同的方法或收集方式。。。我用了这个:
var formData = Components.classes["@mozilla.org/files/formdata;1"]
.createInstance(Components.interfaces.nsIDOMFormData);
然而,这给了我以下的错误
获取属性的权限被拒绝
XPCComponents.class
我不确定这是为什么。。。路径“@mozilla.org/files/formdata;1
”是否不正确?我做了更多的研究,却一事无成!于是我考虑将表单序列化,并将以下内容更改为
var formData = {};
$.each($('form')[0].serializeArray(), function(_, kv) {
if (formData.hasOwnProperty(kv.name)) {
formData[kv.name] = $.makeArray(formData[kv.name]);
formData[kv.name].push(kv.value);
}else {
formData[kv.name] = kv.value;
}
});
虽然这没有错误,但是Ajax函数没有上传(我认为它没有识别或查找文件,或者只是收集文件值的字符串)。有没有人对旧浏览器中的FormData有什么建议,特别是Firefox 3.6——这是我唯一需要支持的旧浏览器
***更新***
这是HTML页面上表单的内容
<form action="" method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm" target="#">
<label for="fileField">Rechnung hochladen</label>
<input type="file" name="fileField" id="fileField">
<progress id="progressbar" class="progressbar_margin hidden"></progress>
</form>
霍奇拉登酒店
我认为您应该在编写代码之前使用此选项:
netscape.security.PrivilegeManager.enablePrivilege(
'UniversalXPConnect'
);
请务必执行以下操作:
我建议试试这个。它支持iframe回退,以便在旧浏览器中上载文件。表单中包含哪些元素?如果它们是非文件输入,您应该能够使用
$('theForm').serialize()
作为.ajax()
调用的数据属性。如果问题可以重新表述为“使用ajax上传文件”,则该表单很简单,包括以下内容(请参见原始问题)这可能会有所帮助:页面上说它支持firefox 3.6+。有一个显然更为最新的叉子