1

我在 asp.net mvc3 中使用这个插件通过 Ajax 上传文件。 http://malsup.com/jquery/form/#ajaxSubmit 但它在 IE7 中不起作用。

$("#Controls").submit(function () {
            var options = {
                url: "/Education/upDoc",
                datatype: "json",
                success: showResponse
            };
    $(this).ajaxSubmit(options);
});

function showResponse(responseText, statusText, xhr, $form) {
        alert("sr");
        alert("Sr  " + responseText.success);
        if (responseText.success == true) {
            //some code
        }
    }

<form action='' id='Controls' method='post' enctype='multipart/form-data'>
<table>
                        <tr> 
                        <td>File Type</td> 
                        <td><span class='leftten'></span></td> 
                        <td> 
                        @*<select id='documentType' name='documentType'> 

                        </select> *@
                        @Html.DropDownList("documentType", doctypelist, new { @id = "documentType" })
                        </td> 

                        <td><img src='../../img/AlertSign.jpg'  class='errImgDoc' data-style-tooltip='tooltip-shiny-red' title='' id='errFileType'  height='18px' width='20px'/></td> 
                        <td><span class='leftfortytwo'></span></td> 
                        <td><input type='file' id='file' name='file' /></td> 
                        <td><img src='../../img/AlertSign.jpg'  class='errImgDoc' data-style-tooltip='tooltip-shiny-red' title='' id='errFile'  height='18px' width='20px' /></td> 
                        <td><span class='leftfortytwo'></span></td> 
                        <td>Name</td> 
                        <td><span class='leftten'></span></td> 
                        <td><input type='text' id='description' name='description' /></td> 
                        </tr> 
                        </table> 
                        <br /> 
                        <div align='right'> 
                        <table><tr> 
                        <td><input type='button' id='eduUploadCancel' class='Cancel' onmouseover='CancelHover(this)' onmouseout='CancelMouseOut(this)' onclick='Cancel(this)' /></td><td><span class='leftten'></span></td><td><input type='submit' id='eduUploadSave' class='Save' onmouseover='SaveHover(this)' onmouseout='SaveMouseOut(this)' /></td></tr></table> 
                        </div>

</form>

在这里,showResponse()永远不会用 IE7 调用。在 Chrome 和 Firefox 上运行良好。请帮助!

4

1 回答 1

4

IE 7 是旧浏览器,不支持 XMLHttpRequest Level 2。

对于较旧的浏览器,使用涉及 iframe 的后备技术,因为无法使用 XMLHttpRequest 对象的 1 级实现来上传文件。这是一种常见的后备技术,但它具有固有的局限性。iframe 元素用作表单提交操作的目标,这意味着将服务器响应写入 iframe。如果响应类型是 HTML 或 XML,这很好,但如果响应类型是脚本或 JSON,则效果不佳,这两种类型通常都包含在 HTML 标记中找到时需要使用实体引用来表示的字符。

http://malsup.com/jquery/form/#file-upload

于 2012-04-24T12:12:36.210 回答