1

Я использовал этот плагин для загрузки файлов через Ajax в asp.net mvc3. http://malsup.com/jquery/form/#ajaxSubmit Но он не будет работать в IE7.Загрузка файла Ajax в 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

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

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

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

+0

Так что, если мой ответ был простой текст или XML, он будет работать в IE? –

+0

Да, я думаю, но лучше проверить это. –

+1

Возможно, попробуйте вернуть обычный текст JSON, а затем использовать JSON.parse() – ruffrey