2011-01-06 10 views
1

ich ein Problem habe, werde ich versuchen zu erklären:Doppel fordert jquery ajax

Im folgenden Funktion (Ajax jQuery)

$.ajax({ 
     type: "POST", 
     url: "index.php?controller=Group&action=getInfoAjax", 
     data: "parameter="+parameter, 
     dataType: "json", 
     success: function(message) 
     { ..... 

einige Male (ich bin nicht sicher, wie zu reproduzieren es) der Ajax-Aufruf wird zweimal durchgeführt, und das folgende kann auf Firebug gesehen werden:

  • Der erste bleibt denken und der zweite scheint abgeschlossen zu sein.
  • Beide enthält die Antwort auf der Registerkarte "Antwort".
  • Die Erfolgsfunktion wird nie aufgerufen.
  • Ich dachte, dass es war, weil der Benutzer zweimal klickte, aber ich habe bereits etwas Code platziert, um das zu vermeiden. In meinem letzten Test habe ich gesehen, wie der erste dachte und mit "keinem Grund" begann der zweite.

    Vielen Dank im Voraus

    +0

    Können Sie HTML/JS vollständig posten? – Chandu

    +0

    Gibt es eine Chance, dass der AJAX im Callback zu einer Animation (oder ähnlichem) aufgerufen wird? – user113716

    Antwort

    0

    Ohne zu Ihrer html/js zu suchen, könnte es schwierig sein, eine Lösung vorschlägt. Aber das Folgende könnte eine großartige Arbeit sein. Ben Alman's Debounce and Throttle Plugin wird in solchen Situationen ein Leben sicherer machen.

    http://benalman.com/projects/jquery-throttle-debounce-plugin/

    In Ihrem Fall könnte ein debounce ausreichend sein. Möglicherweise müssen Sie mit einer Verzögerung von 10-200ms experimentieren. In den speziellen Fällen, in denen zwei Ajax-Anrufe getätigt werden, wird Debounce einen einzelnen Anruf tätigen.

    Zum Beispiel verwende ich Debounce in allen Ajax-Aufrufen, die auf "Text" Box Keyup-Ereignis ausgelöst werden sollen. Entprellen, Art von Warteschlangen mehrere schnell abgefeuert aufeinanderfolgenden Aufrufen. Wenn die aufeinander folgenden Anrufe für mindestens eine "Verzögerungszeit" aufhören, führt die Entprellung zu einem Anruf.