我很抱歉,我只是一个新手在WP和ajax,但我需要你的帮助。我不确定这是一个错误,还是只是我没有办法找到解决方案。
我有以下情况。
我有一个插件,显示从远程mysql服务器的某些数据。这些数据需要定期更新。
目前,我已经通过AJAX实现了这一点,或多或少,像这样:
$.ajax({
type : "POST",
url: cktn_ajax_object.ajax_url,
data: params,
dataType: "json",
success: function(response) {
<< Update UI according to response >>
},
error: function(request, status, err) {
console.debug("[AjaxOnTimer Error] status: " + status);
}
});
其中$.ajax
调用负责检索远程mysql数据的相关php脚本。PHP脚本的持续时间是可变的,这取决于它所获取的数据量(比如,从几秒到四五分钟)。
如果我在本地机器上测试整个程序,则没有问题。ajax调用适时而耐心地等待本地 PHP服务器(它正在查询远程 mysql服务器)的(缓慢的)响应,并最终在完成后更新我的UI。
另一方面,当我在生产机器上安装插件时,事情不会像预期的那样工作。在向PHP服务器发出ajax调用几秒钟后,我在浏览器的控制台中得到以下错误:
加载资源失败:连接丢失。——> admin-ajax.php
,我的脚本失败了,除了ajax调用的'status'参数中的单词error
之外,没有其他线索。
显然是心跳。锁柱干扰了我的ajax调用。知道我哪里做错了吗?
将以下代码添加到functions.php中以关闭心跳:
add_action( 'init', 'my_deregister_heartbeat', 1 );
function my_deregister_heartbeat() {
global $pagenow;
if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow )
wp_deregister_script('heartbeat');
}
不确定您的问题是否解决了。但如果有人遇到同样的问题今天,我已经解决了这个使用心跳控制插件可用在这里:https://wordpress.org/plugins/heartbeat-control/.