Загрузка файла Ajax не работает в IE7

Я использовал этот плагин для загрузки файлов через Ajax в asp.net mvc3. http://malsup.com/jquery/form/#ajaxSubmit Но это не сработает в ИЕ7.

$("#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. Пожалуйста, помогите!


person karan k    schedule 24.04.2012    source источник


Ответы (1)


IE 7 является старым браузером и не поддерживает XMLHttpRequest Level 2.

Для старых браузеров используется резервная технология, включающая iframe, поскольку невозможно загружать файлы с использованием реализации уровня 1 объекта XMLHttpRequest. Это распространенный резервный метод, но он имеет присущие ему ограничения. Элемент iframe используется в качестве цели операции отправки формы, что означает, что ответ сервера записывается в iframe. Это нормально, если типом ответа является HTML или XML, но не работает, если типом ответа является сценарий или JSON, оба из которых часто содержат символы, которые должны быть представлены с использованием ссылок на сущности, когда находится в разметке HTML.

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

person Community    schedule 24.04.2012
comment
Итак, если бы мой ответ был простым текстом или XML, он бы работал в IE? - person karan k; 24.04.2012
comment
Да, я думаю, но будет лучше, если вы проверите это. - person ; 24.04.2012
comment
Возможно, попробуйте вернуть обычный текст JSON, а затем используйте JSON.parse() - person ruffrey; 15.02.2013