代码之家  ›  专栏  ›  技术社区  ›  D.J

使用jquery表单插件上载图像在IE8中不工作

  •  4
  • D.J  · 技术社区  · 16 年前

    我正在我的MVC项目中使用jquery表单插件来上传图片。

    图片上传在Chrome和火狐中非常有效,但是在IE8中。

    与chrome不同,它不返回JSON数据,JSON数据稍后会被post-submit回调使用,而在IE 8中,它返回一个txt文件并询问您是否要下载。在TXT文件的一侧,它是JSON数据。

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

    事先谢谢。

    代码放在单独的JS文件中: 上载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"));
    });
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   D.J    16 年前

    好吧,经过一番痛苦的互联网挖掘,我终于找到了我的解决方案,非常乐意分享它:

    jquery表单插件完全没有问题。

    问题是,IE8无法很好地处理JSON回调。即使您将类型指定为“application/json”

    解决方案: 更改内容类型 “application/json”到“text/plain” 在MVC JSONRESULT中

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