/ / jquery setInterval Konflikt mit Ajax - Jquery, Ajax, Setinterval

jquery setInterval Konflikt mit Ajax - Jquery, Ajax, Setinterval

Ich habe eine setinterval-Methode, die PHP-Skript alle 3 Sekunden aufrufen, um nach neuen Daten zu suchen.

                    setInterval($.proxy(function(){
var dataString =  options.url+"table_id="+options.table_id
$.ajax({
type : "POST",
url : options.url+"check",
data : dataString,
success: $.proxy(function(data){
if(data != ""){
var json = $.parseJSON(data);

if(json.num >= 1){
this.callOtherMethod(json.user_id);

}, this));
}
}
}, this)
});
}, this), 3000);

Wenn num> = 1 ist, wird die Schaltfläche angezeigt.

und wenn Benutzer auf Hinzufügen klicken, wird die URL voncallOtherMethod wird so oft geladen, wie die erste Methode aufgerufen wird. Beispiel: wenn der Benutzer nach 30 Sekunden auf Hinzufügen klickt example.com/add wird 10 Mal aufgerufen.

mein CallOtherMethod

                this.callOtherMethod = function(id)
{
this.id = id;
$("#button").show();
$(".add").bind("click", $.proxy(function(){
if(this.user_id > 0){
$.ajax({
type: "POST",
url: "add",
data: options.url+"text="+this.text+"&user_id="+this.user_id,
success: $.proxy(function(data){
if(data != ""){

// add action
}
}, this)
});
}
},this));

Danke für jede Hilfe

Antworten:

1 für die Antwort № 1

Das Problem ist, dass Sie die Schaltfläche anzeigen und die Bindung in der ausführen callOtherMethod während Sie nur Ihr neues zuweisen sollten id. Das $("#button").show() und $(".add").bind("click", $.proxy(function(){ ... sollte in einer separaten Methode aufgerufen werden, die nur einmal von der setInterval Methode. (Sie können eine boolesche Variable verwenden und überprüfen, um sie nur einmal auszulösen).

hoffe das hilft