2

这个 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);
                }
            });
        });

像 Firefox 中的魅力一样工作。文件被发送到服务器,结果返回给客户端。返回的数据是json btw。

但在 Internet Explorer 中,我收到消息Do ​​you want to open or save GradeCheckIn (2 bytes) from localhost。就像我正在尝试下载文件一样。

我该如何解决这个问题?我希望资源管理器中的行为与 Firefox 中的行为相同。

评论后编辑:

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

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

Firefox: application/json; charset=utf-8

即使我在发出请求的代码中明确设置了内容类型:

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);

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

4

1 回答 1

5

大多数浏览器不application/json作为​​返回内容类型处理。如果您仍想编写 json 并将其从 iframe 中读取,您可能只考虑“破解”响应并发回您的内容,但使用text/html.

于 2012-05-03T14:54:09.793 回答