2010-11-14 18 views
9

Aradığım bu soru basit görünüyor, ancak cevap bulamıyor. Farklı URL'leri çağıran birden çok isteğim var. Ama her bir url için, sadece sonucu bir kez istiyorum ve aynı url'de aranan sonuncu olmalı. Sorunum artık "sadece sonuncuyu nasıl alabilirim?" Bunun baktı ve 3 yaşında gibi görünüyor:En son ajax talebinizi bulun ve diğerlerini durdurun

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

güzel ve temiz bir şekilde bunu yapmanın başka yol var? Böyle bir şey varsa, o mükemmel olurdu:

queue: "getuserprofile", 
cancelExisting: true 

(getuserprofile kuyrukta mevcut ajax iptal edilecektir yerde)

Teşekkür

cevap

10

This explains bir ajax arama yapmak için jQuery nasıl kullanılacağı ve nasıl iptal edilir. Tek yapmanız gereken her bir talebi saklayan bir dizi oluşturmaktır. Daha sonra yeni isteği eklerken önceki isteği iptal edebilirsiniz.

ajaxRequests = new Array(); 

queueRequest = function(whatever, you, want) { 
    if(ajaxRequests[ajaxRequests.length - 1]) { 
     ajaxRequests[ajaxRequests.length - 1].abort(); 
    } 

    ajaxRequests[ajaxRequests.length] = //Insert New jQuery AJAX call here. 
} 
4

Sadece son isteğin sonucunu istiyoruz, bu çok basit ve çalışır. Yalnızca son istek yürütülür. Örneğin

beforeSend:{}

: Yerine kütüphanelerini kullanmak

0

, Temel jquery Ajax yöntemini kullanabilirsiniz

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(){} 

});