【问题标题】:wordpress ajax keeps losing connectionswordpress ajax 不断失去连接
【发布时间】:2015-10-01 18:44:37
【问题描述】:

我很抱歉我在 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 调用适时而耐心地等待 local PHP 服务器(正在查询 remote mysql 服务器)的(缓慢)响应,并最终在完成后更新我的 UI .

另一方面,当我在生产机器上安装我的插件时,事情并没有按预期工作。将我的 ajax 调用发送到 PHP 服务器几秒钟后,我在浏览器的控制台中收到以下错误:

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

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

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

【问题讨论】:

    标签: wordpress connection keep-alive heartbeat admin-ajax


    【解决方案1】:

    在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。

    【讨论】:

    • 谢谢你,Sreekanth,但它不起作用。我已经试过了。 Heartbeat API 负责处理后期编辑锁定,但 WP 的自动保存也会破坏我脚本的功能。我也应该禁用自动保存吗?显然,other WP 的 AJAX 调用在期间我的(冗长的)ajax 调用都在破坏。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2013-04-01
      • 1970-01-01
      • 2021-08-04
      • 2015-09-20
      • 2013-05-07
      • 2023-01-23
      相关资源
      最近更新 更多