NikFaraday
@NikFaraday
Student full-stack Developer

Почему JS скрипт срабатывает только со 2го — 3го раза?

Вот у меня есть такой вот скрипт

<script>
$("#submitBtn").click(() => {
    let data = {
        email: $("#email").val(),
        login: $("#login").val(),
        password: $("#password").val()
    };

    let jsonData = JSON.stringify(data);

    $.ajax({
		method: 'post',
		url: '@Url.Action("SignUp", "User")',
		data: jsonData,
		dataType: 'json',
		contentType: 'application/json',
		success: function() {
			alert("Success");
		},
        error: function() {
            alert("Error");
        }
    });
});
</script>


Данный скрипт срабатывает только после 2‑го или 3‑го раза нажатия на кнопку. Почему так и как это можно исправить?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
NikFaraday
@NikFaraday Автор вопроса
Student full-stack Developer
Разобрался сам, вот решение:

Проблема заключалась в том, что я пишу бэк-часть на asp.net. На разметке видно, что у меня кнопка для отправки данных на сервер имеет тип submit. Данный тип кнопки составит вам проблему, если вы захотите реализовать передачу данных через ajax в асинхронном режиме.

Далее объясню решение в том аспекте, как её понимаю я.
Кнопка типа submit сама по себе пытается отправить форму на сервер параллельно запуская ajax скрипт, а так же перегружается страницу. При перегрузке страницы, почему-то полностью пропадает блок success (Есть несколько причин на это), но блок error почему-то остаётся и потом ловит ответ от сервера (Если такой есть). Если же ответ от сервера будет, допустим, статус-код 200, то блока success нет и, логично, нечему просто перехватывать соответствующий ответ.

Решение проблемы заключается в том, что бы просто поменять тип кнопки с submit на button и повешать на кнопку событие ajax.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы