javascript - 未定义 FormData - Firefox 3.6.28 替代方案

标签 javascript jquery form-data

我有一项很棒的工作,就是必须完成一项最初交给承包商但从未完成的工作。没问题,但我现在被告知系统必须支持 Firefox 3.6!不太好,但直到现在我都不会失眠!系统有一个 Ajax 函数,它使用 FormData 对象然后上传一个文档(通常是 PDF)。我已经通过 Firefox 3.6 运行了它,我得到了以下内容

"FormData is not defined"
var formData = new FormData($('form')[0]);

没关系,因为我看到这个对象不受支持,我只需要使用不同的方法或收集方式...我用过这个:

var formData = Components.classes["@mozilla.org/files/formdata;1"]
        .createInstance(Components.interfaces.nsIDOMFormData);

但是这给了我以下错误!

Permission denied for http://10.29.100.23:8080 to get property 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;
    }
});

虽然这没有#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>

最佳答案

FormData是一个 XMLHttpRequest Level 2 接口(interface),可以使用 XHR/Ajax 轻松提交表单(包括文件上传)。正如您所发现的,它仅在 Firefox 4 及更高版本中可用。 (MDN documentation 有一个浏览器兼容性表。)

我建议尝试 jQuery Form Plugin .它支持在旧版浏览器中上传文件的 iframe 回退。

关于javascript - 未定义 FormData - Firefox 3.6.28 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514570/

相关文章:

javascript - 使用Meteor JS实现Android推送通知有哪些选择

javascript - 如何在javascript中重用函数

javascript - 为什么装饰器必须将(this)应用于函数

javascript - 在 $.getJSON 函数中测试 bool 变量时出现奇怪的结果

javascript - 元素的 FormData 不起作用 - Internet Explorer 10

javascript - promisify 来自 adal-node 的 acquireTokenWithClientCredentials 函数

javascript - 在Javascript : Load some collection of data,中随机排序,返回输出

jquery - 无法按照常见问题解答示例使用 jquery 禁用表单元素

c# - React 中的 FormData 对象不会在后端 C# 上转换为模型

c# - 带有额外参数的 Webapi 表单数据上传(到 DB)