Как получить другое «оповещение» для каждой формы в запросе ajax?

#javascript #php #jquery #ajax

#javascript #php #jquery #ajax

Вопрос:

   let getLoginPassSystem = function (getPassForgotSystem, getLoginCheckSystem) {
  $(document).ready(function () {
    $('#login,#lostpasswordform,#register').submit(function (e) {
      e.preventDefault();
      $.ajax({
        type: "POST",
        url: 'http://www.virtuelles-museum.com.udev/spielelogin/logsystem.php',
        data: $(this).serialize(),
        success: function (response) {
          var data = JSON.parse(response);

          if (data.success == "accepted") {
            document.getElementById('inner').innerHTML = 'Herzlich Willkommen';

            // location.href = 'index.php';
          } else {
            alert('Ungültige Email oder Password!');
          }
        }
      });
    });
  })
}
 

Ну, я хочу иметь для каждой формы (#login, #lostpasswordform, #register) другое «оповещение». Возможно ли это на самом деле?

Комментарии:

1. Кстати, я знаю, что если я выполню другую функцию, это сработает, но я должен использовать в одной функции.

2. Просто чтобы было ясно, есть несколько способов добиться этого. Вывод: все решения будут работать для вас, вам нужно решить, с каким из них продолжить. решение @raximjon может быть масштабируемым для вас.

Ответ №1:

Вы можете сохранить массаж оповещения в каждом теге div в качестве атрибута данных. Например:

 <div id="login" data-msg="message1"></div>
<div id="lostpasswordform" data-msg="message2"></div>
<div id="register" data-msg="message3"></div>


// then you can invoke them like this
let getLoginPassSystem = function (getPassForgotSystem, getLoginCheckSystem) {
  $(document).ready(function () {
    $('#login,#lostpasswordform,#register').submit(function (e) {
      e.preventDefault();
      let current_form = $(this);
      $.ajax({
        type: "POST",
        url: 'http://www.virtuelles-museum.com.udev/spielelogin/logsystem.php',
        data: $(this).serialize(),
        success: function (response) {
          var data = JSON.parse(response);

          if (data.success == "accepted") {
            document.getElementById('inner').innerHTML = 'Herzlich Willkommen';

            // location.href = 'index.php';
          } else {
            alert(current_form.attr('data-msg')); 
          }
        }
      });
    });
  })
}
 

Комментарии:

1. Хорошо, я вышел из области видимости.

2. На самом деле это правильный код, но каким-то образом он перезагружает мою страницу.

3. Пожалуйста, попробуйте прокомментировать измененные части кода и теста. Я думаю, что есть другой код, который вызывает эту проблему

Ответ №2:

Похоже, вы можете просто проверить e.target — оно будет разным для каждой формы.

Вы можете получить более подробную информацию Event.target здесь: https://developer.mozilla.org/en-US/docs/Web/API/Event/target

Комментарии:

1. Всегда предлагается добавить небольшой фрагмент кода, чтобы объяснить, как вы предлагаете вам решение, иначе вы можете просто прокомментировать исходный вопрос.