2016-11-23 4 views
0

Это очень плохо кодмногоразовый Ajax вызова в Х раз с той же логикой

мне нужно сделать подобную логику, но без setInterval.

Существует основа 5 модальных

<span class="spanButton registration" data-reveal-id="addExternalRegistration">Add external registration</span> 

Этой кнопка, выявить пуст модального

<div id="addExternalRegistration" class="reveal-modal" data-reveal aria-hidden="true"> 

и с Jquery я заполнить диалоговое окно с формой.

В случае успеха Ajax я изменяю содержимое в диалоговом окне, если форма имеет ошибки. И история заканчивается здесь. Но мне нужно покрыть х подает, прежде чем форма будет действительна.

setInterval убивает память Я знаю, что это просто пример, чтобы показать, что я хочу.

ответ - это новая форма с ошибками и не должна быть подавлена, необходимо отправить запрос ajax и все, что в кругах x.

$('.registration').click(function() { 
      $('#addExternalRegistration').load("/dashboard/add-external-registration/{{ confName }}"); 

      setInterval(function() { 
       $('form[name="dashboard_conference_registration_form"]').on('submit', function (e) { 
        e.preventDefault(); 

        $.ajax({ 
         url: '/dashboard/add-external-registration/{{ confName }}', 
         method: 'POST', 
         data: $(this).serialize(), 
         success: function(response) { 
          $('#addExternalRegistration').html(response); 
         } 
        }); 
       }); 
      }, 3000); 
     }); 

ответ

0

Я делаю некоторые старые трюки.

рекурсивные вызовы

Это функция, которая посылает запрос Ajax неограниченное количество времени

(в теории из-за утечки памяти, к сожалению).

var ajax = function() { 
      $('form[name="dashboard_conference_registration_form"]').on('submit', function (e) { 
       e.preventDefault(); 

       $.ajax({ 
        url: '/dashboard/add-external-registration/{{ confName }}', 
        method: 'POST', 
        data: $(this).serialize(), 
        success: function(response) { 
         $('#addExternalRegistration').html(function() { 
          return response; 
         }); 
         setTimeout(ajax(), 2000); 

        } 
       }); 
      }); 
     }; 

Тогда я называю рекурсивную функцию, которая стреляет рекурсию на кнопку.

 $('.registration').click(function() { 
      $('#addExternalRegistration').load("/dashboard/add-external-registration/{{ confName }}", 
        // Wait until form is loaded at modal window 
        // And then do the logic 
        function() { 
         $('form[name="dashboard_conference_registration_form"]').on('submit', function (e) { 
          e.preventDefault(); 

          $.ajax({ 
           url: '/dashboard/add-external-registration/{{ confName }}', 
           method: 'POST', 
           data: $(this).serialize(), 
           success: function(response) { 
            $('#addExternalRegistration').html(function() { 
             return response; 
            }); 
            setTimeout(ajax(), 2000); 
           } 
          }); 
         }); 
        } 
      ); 

     }); 

 Смежные вопросы

  • Нет связанных вопросов^_^