1

我很抱歉我在 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 服务器几秒钟后,我在浏览器的控制台中收到以下错误:

加载资源失败:连接丢失。---> admin-ajax.php

error我的脚本失败了,除了 ajax 调用的“状态”参数中的单词之外,我没有其他线索。

显然 heartbeat.lock-post 正在干扰我的 ajax 调用。知道我在做什么错吗?

4

2 回答 2

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。

于 2015-07-13T13:31:53.530 回答
-2

不确定您的问题是否已解决。但是,如果今天有人遇到同样的问题,我已经使用此处提供的 Heartbeat Control 插件解决了这个问题:https ://wordpress.org/plugins/heartbeat-control/ 。

于 2017-01-16T11:07:46.943 回答