JQuery 文件上传插件、Internet Explorer 和 IFrame 传输

标签 jquery iframe file-upload knockout.js internet-explorer-9

我正在使用this plugin (只是基本版本)并利用所有简洁的功能进行进度更新,以与我自己的 UI 配合使用(使用 Knockout.js 和 Twitter Bootstrap)。以下是一些上下文代码片段:

    // The file is sent to an ASP.NET MVC Web Api service to do all the business logic/DB stuff
    uploadUrl = http://web.api.url/?apikey=key

    $("#fileUpload" + "@index").fileupload({
        headers: {
            'Authorization': "@Html.AccessToken()",
            'Accept': $.support.ajax ? "application/json" : "text/plain"
        },
        url: uploadUrl,
        add: function (e, data) {
            $.each(data.files, function (index, file) {
                // add to KO viewmodel
            });
            data.submit();
        },
        fail: function (e, data) {
            var error = data.errorThrown;
            var text = data.textStatus;
        },
        done: function (e, data) {
            // do some more viewmodel operations
        },
        progress: function (e, data) {
            var progressPercentage = parseInt(data.loaded / data.total * 100, 10);
            // update viewmodel
        }
    });

#fileUpload<Index>元素是文件输入

这在 Chrome、FF 和 Safari 中效果很好,但(令人惊讶的是)在 IE 中效果不佳。当我尝试从文件输入中选择文件时,我得到了一个非常奇怪的响应 - 浏览器打开一个下载对话框?!

Do you want to open or save ?apikey=key (61 bytes) from webapiserver?

我尝试使用 IE 的脚本调试器,并在我的 fileupload 事件监听器中设置断点,但它甚至从未进入其中。我在研究中看到了各种帖子和文章,表明接受类型的 application/json 会搞砸 IE,因此我在代码中有一个条件来尝试处理该问题。

我有什么遗漏的吗?

最佳答案

您的问题出在服务器端。

IE 有点傻,他接受服务器提供的第一个内容类型,因此您始终需要记住首先尝试使用 text/plain 进行回答文本/html.

但是提到了 in the FAQ from the jQuery plugin .

关于JQuery 文件上传插件、Internet Explorer 和 IFrame 传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13295184/

相关文章:

css - 受父页面 CSS 影响的样式

javascript - 在 Express.js 中上传图像的问题

jquery - 如何选择div中的最后一个元素

html - 框架。从不同的移动设备获取相同的 iframe 点

jquery - 调整设备宽度后删除/更改 jquery 代码

windows - (如何)我可以将带有 iframe 代码的内容嵌入到 powerpoint 2010 中吗?

ruby-on-rails - 载波还是回形针作为上传者?

android - 使用 Android 将文件上传到 Django 网络服务

javascript - 过滤逻辑问题jQuery

javascript - 计算从底部到当前位置的距离