Из за чего не срабатывает запрос?

167
10 июня 2019, 22:00

Скрипт для обработки почтовой формы,и для того что бы минимизировать код пришлось искать вот такого рода скрипты почему может не срабатывать запрос?

setSubmitZNum('');
setSubmitZNum('2');
function setSubmitZNum(strId) {
 jQuery(document).ready(function($) {
     $("#af"+strId).submit(function() {
         var str = $(this).serialize();
         $.ajax({
             type: "POST",
             url: "/op"+strId+".php",
             data: str,
             success: function(msg) {
                 if (msg == 'OK') {
                     result = '<div class="notification_ok"><i class="fa fa-check" aria-hidden="true" style="color: #fff;"></i>Спасибо! Наш менеджер с вами свяжится в ближайшее время.</div>';
                     $("#fieldsop").hide();
                 } else {
                     result = msg;
                 }
                 $('#noteop').html(result);
             }
         });
         return false;
     });
 });
}

Я хочу что бы одни кодом можно было обрабатывать несколько форм!

 jQuery(document).ready(function($) {
     $("#af).submit(function() {
         var str = $(this).serialize();
         $.ajax({
             type: "POST",
             url: "/op.php",
             data: str,
             success: function(msg) {
                 if (msg == 'OK') {
                     result = '<div class="notification_ok"><i class="fa fa-check" aria-hidden="true" style="color: #fff;"></i>Спасибо! Наш менеджер с вами свяжится в ближайшее время.</div>';
                     $("#fieldsop").hide();
                 } else {
                     result = msg;
                 }
                 $('#noteop').html(result);
             }
         });
         return false;
     });
 });
Answer 1

Уберите вложенные обработчики, сгруппируйте формы по классу:

jQuery(document).ready(function($) { 
  $(".mailform").submit(function() { 
    var id = $(this)[0].id; 
    var strId = id.replace(/^af/, ''); 
    var str = $(this).serialize(); 
    $.ajax({ 
      type: "POST", 
      url: "https://acs.com.ua/wp-content/plugins/opros-list/op" + strId + ".php", 
      data: str, 
      success: function(msg) { 
        if (msg == 'OK') { 
          result = '<div class="notification_ok"><i class="fa fa-check" aria-hidden="true" style="color: #fff;"></i>Спасибо! Наш менеджер с вами свяжится в ближайшее время.</div>'; 
          $("#fieldsop").hide(); 
        } else { 
          result = msg; 
        } 
        $('#noteop').html(result); 
      } 
    }); 
    return false; 
  }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<form class="mailform" id="af"> 
  <input id="i1" /> 
  <input type="submit" /> 
</form> 
<form class="mailform" id="af2"> 
  <input id="i2" /> 
  <input type="submit" /> 
</form> 
<div id="noteop"></div>

Answer 2

У вас выполняется стандартное поведение формы - отправка запроса. Вам нужна его предотвратить, добавьте в обработчик сабмита

 $("#af"+strId).submit(function(event) {
     event.preventDefault()
     var str = $(this).serialize();
READ ALSO
Получение значений input&#39;ов и их отрисовка

Получение значений input'ов и их отрисовка

У меня есть много полей ввода цифр с одним классом, мне нужна отрисовка их значений в элемент с классом red-info после нажатия на кнопку (их в dom дереве...

110
Не могу установить Angular

Не могу установить Angular

Такая вот ошибка,переустанавливал node, не помогает

102
Поиск по тексту не работает

Поиск по тексту не работает

У меня есть таблица movies в которой 20 фильмовКогда я произвожу поиск фильма по его названию, выводится все фильмы и echo $sql; возвращает только...

152
Очистить колонцу в MySql

Очистить колонцу в MySql

Есть таблица с колонками id, user, count со значениями

128