当前位置: 首页>>网站问题>>正文


管理员ajax请求返回0与 die()

webfans 网站问题 , , 去评论

问题描述

所以我在管理区域(like this)中使用此配置进行AJAX调用:

add_action( 'admin_head', 'ajaxPerNgg' );

function ajaxPerNgg(){ ?>
<script type="text/javascript" >
jQuery(document).ready(function() {
    jQuery("#message").remove();
    jQuery("#errore a#attivo").click(
        function(){
            var data = {
                action: 'my_action'
            };
            jQuery.post(ajaxurl, data, function(response) {
                if(response == "attivato")
                    jQuery("#errore a#inattivo").attr("id","completato").html("Attivato");
                else
                    jQuery("#errore a#inattivo").attr("id","attivo").html("Attivalo ora");
            });
        }
    );
});
</script>
<?php }

add_action('wp_ajax_my_action', 'my_action_callback');

function my_action_callback() {
    echo 'attivato';
    die();
}

它只是一个测试代码,但它总是返回0而不是字符串”attivato”。它也正确找到了ajax url,没有404错误。问题是什么?

最佳解决方案

添加它:add_action('wp_ajax_nopriv_my_action', 'my_action_callback');。请注意nopriv

它会解决你的问题!

次佳解决方案

我有同样的问题。解:

add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
add_action('wp_ajax_my_action', 'my_action_callback');

如果您不添加两者(使用和不使用nopriv),它将仅在登录模式或退出模式下工作。 nopriv用于退出,另一个用于登录。

第三种解决方案

不确定这是不是你的问题,但我得到了”0″的响应,我花了最长的时间才弄明白。除了确保你在PHP函数的末尾放置exitdie之外,我发现你必须把你的add_action('wp_ajax_...位置放在插件的顶层。我把它嵌套在我的admin_menu挂钩里面,但它没有用。我不确定你的上面的代码是否是你的顶级插件php文件中的include函数的一部分(就像我的一样)。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2084.html,转载请务必附带本地址声明。