2015-02-24 60 views
1

我使用这个功能来运行AJAX代码WordPress的Ajax调用被称为递归

add_action('wp_ajax_my_action', array(&$this,'ChatAjax')); 

此代码应该叫每30秒,我使用这个代码

function CheckRequests(){ 
    jQuery.ajax({ 
    url : Chat.ajaxurl, 
    type:'POST', 
    data: 'action=my_action', 
    success: function(data){jQuery('#LiveChat').html(data);} 
    }); 
    window.setInterval(function(){CheckRequests()}, 30000); 
} 

它的工作原理除了罚款之外,该功能不会每30秒调用一次。代码每秒钟都会被调用,所以整个网站被我的主机提供商暂停。

回答

2

这是因为用于设置回调的代码位于函数范围内,并且这导致了递归调用。

function CheckRequests(){ 
    jQuery.ajax({ 
     url : Chat.ajaxurl, 
     type:'POST', 
     data: 'action=my_action', 
     success: function(data){jQuery('#LiveChat').html(data);} 
    }); 
}//close the bracket here 
//call should be outside the function scope 
window.setInterval(CheckRequests, 30000); 
+0

杰尼你刚才救我的一天:d感谢很多的解决方案是在我面前的所有时间:d – 2015-02-24 02:04:39

+0

是您的解决方案是有益的,非常感谢杰尼 – 2015-02-24 03:05:09