Mik*_*Sav 10 javascript jquery form-data
我有一份非常出色的工作,不得不完成最初给承包商的工作,但从未完成.不是问题但我现在被告知系统必须支持Firefox 3.6!不是很好,但不是我会失去睡眠直到现在!系统具有Ajax函数,该函数使用FormData对象,然后上载文档(通常是PDF).我通过Firefox 3.6运行了这个,我得到以下内容
"未定义FormData"
var formData = new FormData($('form')[0]);
这很好,因为我可以看到这个对象不受支持,我只需要使用不同的方法或收集方式......我用过这个:
var formData = Components.classes["@mozilla.org/files/formdata;1"]
.createInstance(Components.interfaces.nsIDOMFormData);
Run Code Online (Sandbox Code Playgroud)
但是这给了我以下错误!
http://10.29.100.23:8080的权限被拒绝获取属性XPCComponents.classes
我不确定为什么这是......道路" @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;
}
});
Run Code Online (Sandbox Code Playgroud)
虽然没有#t错误,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>
Run Code Online (Sandbox Code Playgroud)
我认为你应该在代码之前使用它:
netscape.security.PrivilegeManager.enablePrivilege(
'UniversalXPConnect'
);
Run Code Online (Sandbox Code Playgroud)
为了确保也这样做:
希望它有效,祝你好运。