2017-08-29 1 views
0

Je suis aux prises avec cela depuis des semaines maintenant et j'ai essayé de nombreuses façons.AJAX continuer à charger - comment puis-je lier cela ou empêcher cela?

Ceci est une fonction de recherche ajax. Si j'initie une recherche, il continue à charger plusieurs fois. Plus je cherche, plus il charge.

C'est ma fonction de recherche:

$("#q").on('submit', function (e) { 


     e.preventDefault(); // avoid to execute the actual submit of the form. 

     $("#q").off('submit'); 

     console.log('#################'); 
     console.log('search Initiated'); 
     console.log('#################'); 

     var frm = $('#q'); 
     var url = frm.attr('action'); 

     if (reloaddiv === undefined) { 
      var reloaddiv = "reload"; 
     } 
     if (reloadurl === undefined) { 
      var reloadurl = frm.attr('action'); 
     } 

     $.ajax({ 
      type: frm.attr('method'), 
      url: frm.attr('action'), 
      data: frm.serialize(), 
      beforeSend: function() { 
       console.log('Search: Preparing'); 
       prepareBeforeAjax(reloaddiv, reloadurl); 
      }, 
      success: function (data) { 
       $('.records').html(data); 
       console.log('Search: Success'); 
      }, 
      complete: function() { 
       console.log('Search: Complete'); 
       hideModalIfVisible(); 
      }, 
      always: function() { 
       $("#q").on('submit', e); 
      } 
     }) 

    }); 

Et ceci est mon journal de la console

################# 
subscriptions:1037 search Initiated 
subscriptions:1038 ################# 
subscriptions:1055 Search: Preparing 
subscriptions:941 prepareBeforeAjax 
subscriptions:1036 ################# 
subscriptions:1037 search Initiated 
subscriptions:1038 ################# 
subscriptions:1055 Search: Preparing 
subscriptions:941 prepareBeforeAjax 
subscriptions:1036 ################# 
subscriptions:1037 search Initiated 
subscriptions:1038 ################# 
subscriptions:1055 Search: Preparing 
subscriptions:941 prepareBeforeAjax 
subscriptions:1036 ################# 
subscriptions:1037 search Initiated 
subscriptions:1038 ################# 
subscriptions:1055 Search: Preparing 
subscriptions:941 prepareBeforeAjax 
subscriptions:1060 Search: Success 
subscriptions:975 ------------ 
subscriptions:976 initReady Initiated 
subscriptions:977 ------------ 
subscriptions:1063 Search: Complete 
subscriptions:1060 Search: Success 
subscriptions:975 ------------ 
subscriptions:976 initReady Initiated 
subscriptions:977 ------------ 
subscriptions:1063 Search: Complete 
subscriptions:1060 Search: Success 
subscriptions:975 ------------ 
subscriptions:976 initReady Initiated 
subscriptions:977 ------------ 
subscriptions:1063 Search: Complete 
subscriptions:1060 Search: Success 
subscriptions:975 ------------ 
subscriptions:976 initReady Initiated 
subscriptions:977 ------------ 
subscriptions:1063 Search: Complete 

initReady - Ceci est fondamentalement juste une autre fonction JavaScript que j'appelle après chaque poste ajax - je le fais parce que en utilisant des modaux, je n'ai pas besoin de tout charger.

Répondre

-1

La fonction ressemble à elle continue d'appeler lui-même à cause de:

always: function() { 
    $("#q").on('submit', e); 
} 
+0

je veux dire, pour moi qui ressemble plus à un événement de liaison, mais même si elle l'était, il est invalide parce que 'e' n'est pas une fonction. ce n'est certainement pas * déclencher * l'événement à nouveau. –

+1

Vous aviez raison! Merci beaucoup –