Я хочу загрузить файл с помощью ajax. Итак, у меня есть небольшой плагин jquery, который добавляет кнопку на страницу. После нажатия кнопки открывается диалоговое окно начальной загрузки с вводом формы и файла. Форма передается в ASP MVC-метод, который сохраняет файл и возвращает json, который отображается в сообщении.Загрузка файла iframe doesent на IE
Он отлично работает в хроме, но в IE функция onload iframe не вызывается, и браузер дает мне json для загрузки.
стороне сервера:
public ActionResult Upload(IEnumerable<HttpPostedFileBase> file)
{
return Json(new { FileName = file.First().FileName });
}
стороне клиента:
$.fn.fileUpload = function (options) {
//options
var settings = $.extend({
inputName: 'file'
}, options);
//variables
var that = this;
var index = 0;
var addFileBtn = $("<button>+</button>");
var modal = $('<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">'+
'<div class="modal-dialog" role="document">'+
'<div class="modal-content">'+
'<div class="modal-header">'+
'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>'+
'<h4 class="modal-title" id="myModalLabel">Modal title</h4>'+
'</div>'+
'<div class="modal-body">' +
'<iframe name="postiframe" id="postiframe" style="width:0;height:0;border:0px solid #fff"></iframe>' +
'<form id="my_form" name="my_form" action="/Home/Upload" method="POST" enctype="multipart/form-data" target="postiframe">' +
'<input name="complaintId" value="123" type="hidden" />'+
'<input name="file" id="file" type="file"/>'+
'<input type="submit" value="Submit" id="submitBtn"/>'+
'</form>'+
'</div>'+
'<div class="modal-footer">'+
'<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>'+
'<button type="button" class="btn btn-primary">Save changes</button>'+
'</div>'+
'</div>'+
'</div>' +
'</div>');
//init
addFileBtn.click(function() {
modal.modal();
modal.find("#submitBtn").click(function (ev) {
var form = modal.find('#my_form');
form.attr("encoding", "multipart/form-data");
form.attr("enctype", "multipart/form-data");
modal.find("#postiframe").load(function() {
var iframeContents = $(this).contents().find("pre").html()
alert(iframeContents);
});
form.submit();
return false;
});
});
that.append(addFileBtn);
}
Ну, вы отправляете форму и возвращаете JSON. Некоторые браузеры будут отображать JSON как обычный текст, другие просят загрузить его. Похоже, вы не хотите возвращать JSON. – epascarello
Спасибо. Изменен метод ASP для возврата Content (string content) вместо Json, и он выглядит нормально. Если вы напишете его как ответ, я его приму. –