Функция успеха Ajax не работает, если результат Json возвращается с использованием enctype = "multipart / form-data"

Я работаю над проектом, в котором мне нужно загрузить файл с помощью всплывающей формы. Проблема в том, что когда я возвращал результат действия 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 возвращается с использованием enctype = &quot;multipart / form-data&quot;

Информация заголовка Функция успеха Ajax не работает, если результат Json возвращается с использованием enctype = &quot;multipart / form-data&quot;

Как я могу вызвать функцию успеха Ajax с результатом действия JSON? Спасибо

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

user3559349 01.04.2018 02:06

У меня есть и другие данные, которые нужно передать вместе с файлом.

Faisal Sajjad 01.04.2018 02:10
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
2
21
0

Другие вопросы по теме