#jquery #ajax #asp.net-mvc
#jquery #ajax #asp.net-mvc
Вопрос:
Форма:
<form onsubmit="groupSubmitForm(this)" method="post" action="/Controller/Action">
Форма отправляется на asp.net Действие MVC, которое возвращает частичное представление.
function groupSubmitForm(form)
{
alert("test");
form.preventDefault();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
contentType: "application/json; charset=utf-8",
dataType: 'html',
data: $(form).serialize(),
success: function (response) {
alert("success");
}
}
});
return false;
alert("test");
}
Сообщение принимается нормально при действии контроллера, но по какой-то причине метод успеха не вызывается, когда действие возвращает partialview.
Я использую почти идентичный фрагмент кода в том же приложении, который работает нормально. Единственное отличие заключается в том, что форма отправляется из модальной начальной загрузки Twitter.
Кто-нибудь знает, почему ни успех, ни ошибка не выполняются?
Обновить:
Это приводит к тому, что отправка на самом деле не остановлена так, как я пытаюсь это сделать, и именно это вызывает проблему. Как я могу остановить событие отправки?
Решение
Как я писал в обновлении, проблема заключалась в том, что preventDefault не работал, groupSubmitForm(форма, событие), event.preventDefault решил ее.
Комментарии:
1. что такое ошибка консоли?
2. Вы проверили, что теперь ошибки возникают на стороне сервера?
3. никаких ошибок на стороне сервера, html возвращается в браузер, но без предварительного вызова success .
4. в firefox: ReferenceError: $ не определен
Ответ №1:
Кажется, вы не добавили библиотеку JQUERY
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
Комментарии:
1. почему тогда форма отправляется на сервер?
2. @MikeAlike234 Форма будет игнорировать неработающий JavaScript и выполнять действие по умолчанию с помощью метода по умолчанию…