jquery setInterval与ajax冲突

时间:2012-06-28 19:09:48

标签: jquery ajax setinterval

我有一个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));

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

问题是您在显示按钮并在callOtherMethod中执行绑定,而您应该只分配新的id$('#button').show()$(".add").bind('click', $.proxy(function(){ ...应在一个单独的方法中调用,该方法仅从setInterval方法触发一次。 (你可以使用和检查一个布尔变量来使它只触发一次)。

希望这会有所帮助