2010-11-14 2 views
9

Ich habe gesucht und dieses Problem scheint einfach, kann aber keine Antwort finden. Ich habe mehrere Anfragen, die verschiedene URLs aufrufen. Aber für jede URL möchte ich nur einmal das Ergebnis und es muss das letzte in derselben URL sein, die aufgerufen wird. Mein Problem ist jetzt "Wie bekomme ich nur den letzten?" Ich sah dies und es scheint, 3 Jahre alt zu sein:Holen Sie sich die neueste Ajax-Anfrage und brechen andere ab

http://plugins.jquery.com/project/ajaxqueue

Jede andere Art und Weise die schön und sauber zu tun? Wenn es so etwas wie das ist, wäre es perfekt:

queue: "getuserprofile", 
cancelExisting: true 

Dank (wo die bestehende Ajax in getuserprofile Warteschlange wird abgebrochen)

Antwort

10

This explains wie jQuery verwenden einen Ajax-Aufruf zu tun und wie man es abbricht. Alles, was Sie tun müssen, ist ein Array zu erstellen, das jede Anfrage speichert. Sie können dann die vorherige Anfrage abbrechen, während Sie die neue hinzufügen.

4

Da wir nur das Ergebnis der letzten Anfrage wollen, ist dies sehr einfach und funktioniert.

var ajax = null; 
var getFoo = function() { 
    if(ajax) ajax.abort(); 
    ajax= $.ajax({}); 
}; 
getFool(); 
getFool(); 
getFool(); 
getFool(); 
getFool(); 
getFool(); 

Nur die letzte Anfrage wird ausgeführt.

0

Statt Bibliothek zu verwenden, können Sie einfach jquery Ajax-Methode verwenden:

beforeSend:{}

Zum Beispiel:

xhr = jQuery.ajax({ 
      url: /*Your URL*/ 
      type: "POST", 
      data: { 
       //data 
      }, 
      /* if there is a previous ajax request, then we abort it and then set xhr to null */ 
      beforeSend : function() {   
       if(xhr != null) { 
        xhr.abort(); 
       } 
      }, 
success:function(){} 

}); 
Verwandte Themen