#jquery #ajax #razor
#jquery #ajax #razor
Вопрос:
У меня есть форма, которую я публикую, используя JS ниже. Когда я запускаю сеанс отладки в Visual Studio, первая отправка формы не запускает обратный вызов done, и я перенаправляюсь на форму. При второй отправке запускается обратный вызов done, и мое перенаправление работает. Я могу подтвердить, что функция onDone вызывается в обоих случаях, и никаких ошибок не произошло. Форма отправляется на страницу Razor, которая отвечает новым OkResult() . Кто-нибудь знает, почему вызов done не работает во время первого сообщения?
function onDone(e) {
e.preventDefault();
var form = $("#wizard");
$.ajax({
type: 'POST',
url: "@Url.Page("Index","Submit")",
beforeSend: function(xhr) {
xhr.setRequestHeader("RequestVerificationToken",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: form.serialize(),
// dataType: 'json',
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log(textStatus);
}).success(function(data) {
console.log("Done hit")
window.location.href = '/FormComplete';
// kendo.alert(data.success);
// form.getKendoForm().clear();
});
}
Комментарии:
1. Какую версию jQuery вы используете? Начиная с версии 3, у
jqXHR
объекта больше нет.success()
метода. Вместо этого вы должны использовать.done()
2. Звучит как проблема с кэшированием. Попробуйте очистить кэш вашего браузера
3. Я использую jQuery версии v1.12.4. Я очистил кеш, но результат тот же.
4. Вау, эта версия древняя. По крайней мере, перейдите к версии 2.
5. Я использую некоторые компоненты Telerik, и шаблон VS, который они предоставили, использовал эту версию. Я был удивлен, насколько оно старое. Я только начал использовать v2, но, к сожалению, сталкиваюсь с той же проблемой.