2016-06-08 11 views
0

Ich habe ein SELECT-Element mit einer js-Funktion refreshme(), die Change-Ereignis aufrufen wird.müssen Ajax-Aufruf mit Abbruch und Zeitintervall

<select id="cat" name="cat" multiple onchange="refreshme()"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

<div id="result"></div> 


<script> 
function refreshme() 
{ 
    /* i need output in $('#result').html(data) */ 
} 
</script> 

Hier will ich eine URL „demo.php“ nennen Ajax verwenden, wenn wir wählen/nicht wählen Listbox-Element ändern. Problem ist, dass, wenn der Benutzer ein Element auswählt, es sofort eine Ajax-Funktion aufruft. Ich möchte etwas intermal einstellen, so dass, wenn Benutzer eins nach dem anderen Listenfeld auswählen, Ajax nicht anruft. Ich möchte ca. 2 Sekunden Lücke einrichten. Das bedeutet, dass ein Ajax-Anruf nach 2 Sekunden des zuletzt ausgewählten Elements angerufen werden sollte. Wenn der Benutzer ein anderes Listenfeld auswählt, wird der AJAX-Aufruf abgebrochen, wenn er ausgeführt wird und auf das Ergebnis wartet.

+0

var ajaxcall = $ .ajax(); ajaxcall.abort(); es ist nur Client-Seite Anfrage nicht auf der Serverseite zu zerstören – JYoThI

+0

oder Sie benötigen eine Bestätigung vom Benutzer vor Ajax Aufruf bedeuten .Umaufforderung Funktion und bestätigen Sie es und rufen Sie die Ajax – JYoThI

Antwort

1

folgende Verfahren zerstören nur die Client-Seite Anfrage nicht auf Sever Seite .may es Ihnen

wird helfen
<script> 

function refreshme() 
{ 
    if(ajaxcall) 
    { 

     ajaxcall.abort(); //abort the previous request 
    } 

    var ajaxcall = $.ajax() ; //ajax request start here assign to variable 

    //here you can also use array and destroy it using for loop  
} 

</script> 
0

Ich selbst bekam antworten mit Ajax und Timer wie unter. Vielleicht kann dies anderen helfen.

<select id="cat" name="cat" multiple onchange="refreshme()"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
</select> 

<div id="result"></div> 


<script> 

var timer; 
var x; 

function refreshme() 
{ 
    $('#result').html(''); 

    if (x) { x.abort() } // XHR abort 
    clearTimeout(timer); // Clear the timer 
    timer = setTimeout(function() { 
     x = $.post('demo.php',function(data){ 
      $('#result').html(data); 
      }); // run ajax request and store in x variable 
    }, 2000); // 2000ms delay 

} 
</script>