使用jquery上传文件适用于Firefox但不适用于Internet Explorer

Fat*_*ert 2 javascript jquery file-upload asp.net-web-api

这个javascript代码

$(document).ready(function () {
            var uploader = new qq.FileUploader({
                element: document.getElementById('file-uploader'),
                action: 'api/GradeCheckIn',
                debug: true,
                onComplete: function (id, fileName, responseJSON) {
                    alert(responseJSON[0].ValidationErrors[0].ErrorMessage);
                }
            });
        });
Run Code Online (Sandbox Code Playgroud)

就像Firefox中的魅力一样.该文件将发布到服务器,并将结果返回给客户端.返回的数据是json btw.

但在Internet Explorer中,我收到消息是否要从localhost打开或保存GradeCheckIn(2个字节).就像我正在尝试下载文件一样.

我怎么解决这个问题?我想在资源管理器中使用与Firefox相同的行为.

评论后编辑:

请求标头中的内容类型在IE和FireFox之间有所不同:

IE: multipart/form-data; boundary=---------------------------7dc2ec8205b2

Firefox: application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

即使我在发出请求的代码中明确设置了content-type:

xhr.open("POST", queryString, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.send(file);
Run Code Online (Sandbox Code Playgroud)

我仍然无法解决这个问题.所有想法都受到高度赞赏.如果我应该提供更多信息,请告诉我.

Tej*_*ejs 5

大多数浏览器不处理application/json返回内容类型.如果您仍想编写json并从iframe中读取它,您可能只会考虑"黑客"响应并发送回您的内容,但使用mime类型text/html.