带成功回调的AJAX按钮。(泰坦框架)

时间:2018-03-10 作者:Phill Healey

我正在创建一个插件Titan Framework 处理选项页。作为插件的一部分,我收集了登录尝试失败的日志,然后将其显示在选项面板中。

日志经常需要清除,因此我创建了一个AJAX Button 控制单击时调用清除日志的函数。然而,为了显示这个过程已经发生,并且按下按钮确实做了一些事情,我需要刷新页面。

根据Titan Framework的文档,这似乎可以使用按钮的回调属性来完成。上面写着:

success\\u callback | string/array |(可选)在成功的ajax调用后要调用的Javascript函数的名称(在窗口范围内)。使用admin\\u enqueue\\u脚本添加脚本。默认为空/无。

然而,没有任何实例表明这实际上是如何做到的。以下是我目前的代码:

插件文件(AJAX按钮):

$lsPanel->createOption( array(
  \'name\' => \'Reset Log\',
  \'type\' => \'ajax-button\',
  \'action\' => \'yyy_reset_security_logs\',
  \'label\' => __( \'Reset Security Logs\', \'default\' ),
  \'success_callback\' => \'ajax_success_refresh\',
) );

//run a clinical cms / titan framework ajax call
add_action( \'wp_ajax_yyy_reset_security_logs\', array( $this, \'yyy_reset_logs\' ) );
插件文件(AJAX操作函数):

function yyy_reset_logs() {
    $result = $this->yyy_clear_security_logs();
    if ( $result ) {
        wp_send_json_success( __( \'Success!\', \'default\' ) );
        }
        wp_send_json_error( __( \'Failed!\', \'default\' ) );
    }
因此,现在我想使用成功回调刷新页面。我通过admin_enqueue_scripts :

window.location.reload(false); 
目标是让该脚本刷新页面,但仅当按下AJAX按钮并检测到成功结果时。目前,该脚本是在加载任何/所有管理页面时加载的。结果是,由于JavaScript循环无限,管理页面永远不会完全加载。

有没有办法限制刷新JS只在成功清除日志的情况下运行?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

因此,现在我想使用成功回调刷新页面。我通过admin_enqueue_scripts:

我相信这个脚本,你需要一个全局JSfunction 已命名ajax_success_refresh, 如下例所示:

// This is the \'success_callback\' for the AJAX action of \'yyy_reset_security_logs\'.
function ajax_success_refresh() {
    window.location.reload( false );
}
提示:因为它是一个全局function, 您应该使函数名尽可能唯一。

结束

相关推荐

使用加载了AJAX的ACF表单初始化JS

我正在使用acf\\U表单用ajax编辑我的WP帖子。我已经做好了设置,工作正常,我可以编辑帖子并提交新数据,而无需刷新页面。成功完成后,我还可以加载新内容,而无需刷新页面。但是,acf表单中的任何JS在重新加载后都无法工作。我怎样才能让它工作呢,这是我目前所拥有的(function($) { //// This saves without reloading the page var pathtopage = window.location.pathname;