У меня есть тип ввода = «файл», и при изменении этого ввода я хочу отправить форму.ajax post form делает перенаправление страницы
$(document).on("change", "#image-upload", function (e) {
$.ajax({
url: '/BlogPost/UploadHomeReport',
type: 'POST',
data: $('#upload-image-form').serialize(),
success: function (response) {
console.log(response);
}
});
});
<form action="~/BlogPost/UploadHomeReport" method="post" enctype="multipart/form-data" id="upload-image-form">
<input type="file" id="image-upload" name="file" />
<input type="text" name="destinationId" id="destinationId" />
</form>
[HttpPost]
public JsonResult UploadHomeReport(HttpPostedFileBase file, int destinationId)
{
var fileName = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath("~/App_Data/UploadedImages/" + destinationId + fileName));
var path = Server.MapPath("~/App_Data/UploadedImages/" + destinationId + fileName);
return Json(path);
}
Все работает отлично, но когда он должен вернуть JSON перенаправляет на новую страницу. Почему он не возвращает JSON вместо перенаправления?
Попробуйте удалить «действие» в форме –
Если я сделаю так, то файл в UploadHomeReport actionmethod станет null :( –
Но вы не отправляете, отправляя, вы используете, ajax, не так ли? Возможно, именно поэтому это перенаправление, может быть, где-то в коде отправляется –