非常奇怪的错误:针对非管理员的AJAX

时间:2021-01-25 作者:user1409059

我被难住了。出于某种原因,一个非常好且简单的AJAX功能(将用户的电子邮件地址公开给前端)在一个安装中适用于非管理员,但在另一个安装中不适用。我已经用PHP和Ajax验证了代码的准确性。我正在正确地注册、本地化和排队脚本。它适用于管理员,但不适用于非管理员。

我已经检查并禁用了所有插件,以确定某种插件冲突。我回到了2019年的主题。这一切都无济于事。

我正在使用一些插件,这些插件可能会影响订阅服务器的功能,但我无法确定具体哪些功能可能会受到影响。

有什么建议吗?

编辑:以下是PHP:

add_action( "wp_ajax_get_user_email", "get_user_email" );
add_action( "wp_ajax_nopriv_get_user_email", "get_user_email" );
function get_user_email() {

        $user_id = get_current_user_id();
        $user_info = get_userdata($user_id);
        $email_address = $user_info->user_email;
        echo $email_address;

        wp_die();
}
以下是JS:

jQuery( document ).ready( function( $ ) {

    var data = {
            "action": "get_user_email",
            };
    
    jQuery.post(ajax_object.ajax_url, data, function(response) {
            console.log("Email: " + response);
    });

});
我已经考虑过使用RESTAPI作为替代。过去我很快就解决了这个问题,非常令人沮丧。

1 个回复
SO网友:dkeeling

这只是你可以尝试的另一个建议。与其单独进行AJAX调用,不如通过wp_localize_script? 我不确定这是否会对您的特定bug产生任何影响,但值得一试吗?

// Make data accessible to scripts
  wp_localize_script( \'my-script-handle\', \'ajax_data\', array( 
    \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
    // ...other variables
    \'user_email\' => get_user_email(),
    // ...other variables
  ));

相关推荐

单点登录WordPress+AJAX

那个让我晚上睡不着觉。问题是用户已正确登录,但在页面刷新后,应立即登录,而无需重新加载页面。需要一双新鲜的眼睛来观察它。正确设置cookie和nonce似乎有问题,但不确定如何调试。非常感谢您的建议。function my_update_cookie($logged_in_cookie) { $_COOKIE[LOGGED_IN_COOKIE] = $logged_in_cookie; } add_action(\'set_logged_in_cookie\', \