iframe 上传浏览器兼容性

iframe upload browser compatibility

本文关键字:兼容性 浏览器 iframe      更新时间:2023-09-26

我正在使用iframe方法上传csv文件。 我希望它能让我在普通表单提交中没有页面的重定向。

.HTML:

<section id=fileImport>
    <form id="importForm" target="postiframe" name="Import" enctype="multipart/form-data">
            <input name="import-input" id="importInput" type="file" />
            <button id="importBtn" class="btn btn-large">Import</button>
        </form>
</section>

JavaScript:

var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" />');
                this.$("#fileImport").append(iframe);
            var form = $("#importForm");
            form.attr("action", "import/upload");
            form.attr("method", "post");
            form.attr("enctype", "multipart/form-data");
            form.attr("encoding", "multipart/form-data");
            form.attr("target", "postiframe");
            form.submit();
            var self = this;
            this.$("#postiframe").load(function () {
                var iframeContents = $("#postiframe").get(0).contentWindow.document.body.innerHTML;
                self.parseResponse(iframeContents);
            });
enter code here

这是我第一次尝试使用这种 iFrame 方法。 我认为在parseResponse中,我可以只获取pre标签中返回的数据。

例如

<pre>{myData: "blah"}</pre>

我这样做的时候是:

var re = new RegExp("<pre>(.*?)</pre>");
            var matches = response.match(re);

这对Firefox有效。 然后当我在 chrome 中尝试时,chrome 会用类似的东西发回数据

<pre style="width:....">{myData: "blah"}</pre>

我想知道是否有办法在没有pre标签的情况下取回数据,或者是否有办法在不同的浏览器之间解析它。 我还没有在IE 9上尝试过,但我只能想象它比chrome和firefox更难。 有什么想法吗?

使用这样的 iframe 上传数据是否仍在使用? (我们必须支持IE 9,所以我不能使用html 5的东西)。

跨域上传?

如果是这样,则需要重定向页面才能从查询字符串接收结果。

如果没有,请不要使用 iframe 上传,http://jquery.malsup.com/form/,这里有一个插件帮助来异步发布表单。