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 № 1Das 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