Я работаю над проектом, в котором мне нужно загрузить файл с помощью всплывающей формы. Проблема в том, что когда я возвращал результат действия JSON после сохранения файла с контроллера, функция успеха Ajax не запускается.
Код частичного просмотра (всплывающая форма)
@using (Html.BeginForm("save", "UploadFile", FormMethod.Post, new { id = "popupForm", enctype = "multipart/form-data" }))
{
<div>
<input type = "file" id = "file" name = "file">
<input class = "popup btn btn-primary" type = "submit" value = "Save File" />
</div>
}
Код JQuery
$('.popupWindow').on('submit', '#popupForm', function (e) {
var url = $('#popupForm')[0].action;
var files = $("#file").get(0).files;
if (files.length > 0) {
$('#popupForm').data.append("UploadedFile", files[0]);
}
$.ajax({
type: "POST",
url: url,
data: $('#popupForm').serialize(),
datatype: "json",
contentType: "application/json; charset=utf-8",
processData: false,
success: function (data) {
if (data.status) {
$dialog.dialog('close');
oTable.ajax.reload();
alert("File has been sucessfully saved");
}
}
})
e.preventDefault();
})
Код контроллера
public ActionResult Save(HttpPostedFileBase file)
{
try
{
bool status = false;
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/Files"), fileName);
file.SaveAs(path);
status = true;
return new JsonResult { Data = new { status = status } };
}
catch(Exception exp)
{
return RedirectToAction("Index", "UploadFile");
}
}
Когда я нажимаю кнопку «Отправить». Я получаю следующий вывод в браузере
Как я могу вызвать функцию успеха Ajax с результатом действия JSON? Спасибо
У меня есть и другие данные, которые нужно передать вместе с файлом.

Вам необходимо использовать
FormDataдля загрузки файлов с помощью ajax. Обратитесь к stackoverflow.com/questions/29293637/…