我很抱歉我不再是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
另一方面,当我在生产机器上安装我的插件时,事情并没有按预期工作。将我的ajax调用放到PHP服务器后几秒钟,我在浏览器的控制台中收到以下错误:
无法加载资源:连接丢失。 ---&GT;管理员-ajax.php
并且我的脚本失败了,除了error
中的“ <body>
<p>
<a href="http://www.zz.com/abc/z/0/z3970z88-0475-11dz-8603-00144zeabdc1.html#slide0"></a>
Some <strong>strong</strong> text
</p>
</body>
”状态之外,没有其他任何线索。 ajax调用的参数。
显然heartbeat.lock-post干扰了我的ajax调用。 我知道我做错了什么?
答案 0 :(得分:0)
将以下内容添加到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');
}
然后重启apache。
答案 1 :(得分:-2)
不确定您的问题是否已解决。但如果有人今天遇到同样的问题,我已经使用此处提供的Heartbeat Control插件解决了这个问题:https://wordpress.org/plugins/heartbeat-control/。