wordpress阿贾克斯不断失去联系
问题描述:
我很抱歉,我在WP和阿贾克斯是一个新手,但我需要你的帮助。我不确定这是一个错误还是只是我无法找到解决方案。wordpress阿贾克斯不断失去联系
我有以下情况。
我有一个插件,显示远程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脚本的持续时间是可变的,根据它获取的数据量(比如,几秒到四五分钟之间)。
如果我测试整个我的本地机器上,没有问题。阿贾克斯呼吁适当和耐心等待PHP服务器(这是查询远程 MySQL服务器),并最终完成后,它更新我的用户界面的(缓慢)响应。
另一方面,当我在生产机器上安装插件时,事情并不按预期工作。在将我的ajax调用到PHP服务器后几秒钟,我在浏览器的控制台中收到以下错误:
无法加载资源:连接丢失。 ---> admin-ajax.php
和我的脚本失败让我没有其他的线索,在'ajax调用的'状态'参数字error
。
显然heartbeat.lock-post正在干扰我的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');
}
并重新启动Apache。
答
不知道您的问题是否已解决。但是如果今天有人遇到同样的问题,我已经使用Heartbeat Control插件解决了这个问题:https://wordpress.org/plugins/heartbeat-control/。
谢谢Sreekanth,但它不起作用。我已经尝试过了。 Heartbeat API负责处理帖子编辑锁,但WP的自动保存功能也会破坏我的脚本功能。我应该禁用自动保存吗? 显然,在我的(冗长的)ajax调用期间,每个**其他** WP的AJAX调用都会执行**。 –