Asp.net mvc 2 使用Jquery表单插件上载图像在IE8中不起作用

Asp.net mvc 2 使用Jquery表单插件上载图像在IE8中不起作用,asp.net-mvc-2,file-upload,jquery,compatibility,Asp.net Mvc 2,File Upload,Jquery,Compatibility,我在MVC项目中使用jQuery表单插件进行图像上传 图像上传在Chrome和firefox中工作得非常完美,但在IE 8中却很完美 与Chrome不同,在IE 8中,它返回一个txt文件并询问您是否要下载,而不是返回json数据(稍后由提交后回调使用)。在txt文件中,它是json数据 不知道我哪里做错了,有什么想法吗 提前谢谢 代码放在单独的js文件中: upload.js (function ($) { ImageUploader = function (o) { var

我在MVC项目中使用jQuery表单插件进行图像上传

图像上传在Chrome和firefox中工作得非常完美,但在IE 8中却很完美

与Chrome不同,在IE 8中,它返回一个txt文件并询问您是否要下载,而不是返回json数据(稍后由提交后回调使用)。在txt文件中,它是json数据

不知道我哪里做错了,有什么想法吗

提前谢谢

代码放在单独的js文件中: upload.js

(function ($) {
ImageUploader = function (o) {

        var options = {


            success: showResponse,  // post-submit callback 

            url:    "/Image/ImageUpload",         // override for form's 'action' attribute 
            type:      "post",        // 'get' or 'post', override for form's 'method' attribute 
            dataType: 'json',        // 'xml', 'script', or 'json' (expected server response type) 
            clearForm: true        // clear all form fields after successful submit 

        };

        o.ajaxForm(options);

        $("input#file").change(function () {
            o.submit();
        });

// post-submit callback 
        function showResponse(responseText, statusText, xhr, $form) {
        ....
    }
 };
})(jQuery);
在页面视图中:

$(document).ready(function () {
ImageUploader($("#ajaxUploadForm"));
});

在互联网上痛苦地挖掘之后,我终于找到了我的解决方案,非常乐意与大家分享:

jQuery表单插件根本没有问题

问题是有缺陷的IE8不能很好地处理Json回调。即使您将类型指定为“application/json”

解决方案:将内容类型从“应用程序/json”更改为“文本/普通” 在MVC JsonResult中

 return Json(newImage, "text/plain", JsonRequestBehavior.AllowGet);

我认为您必须在ajax调用中将Accept header参数指定为text/javascript(我现在还记得)。这不是IE8的错误,而是功能:)内容类型告诉服务器你们要发送什么,但你们需要告诉它你们期望得到什么回报