我有一个setinterval方法,每隔3秒调用一次php脚本来检查新数据。
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);
如果num为> =将显示1个按钮。
如果用户点击添加按钮,callOtherMethod中的url会在调用第一个方法时加载很多次。 例: 如果用户在30秒后点击添加按钮 example.com/add将被调用10次。
我的电话其他方法
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));
感谢您的帮助
答案 0 :(得分:1)
问题是您在显示按钮并在callOtherMethod
中执行绑定,而您应该只分配新的id
。 $('#button').show()
和$(".add").bind('click', $.proxy(function(){ ...
应在一个单独的方法中调用,该方法仅从setInterval
方法触发一次。 (你可以使用和检查一个布尔变量来使它只触发一次)。
希望这会有所帮助