Jquery Ajax成功消息返回我的主页的HTML

Jquery Ajax成功消息返回我的主页的HTML,jquery,ajax,json,wordpress,Jquery,Ajax,Json,Wordpress,使用ajax和wordpress(尝试正确地执行)。这对我来说是相当新鲜的,但我以前的工作更有天赋。似乎随机开始有问题,所以我把我的代码分解到最基本的级别,我甚至不能让它工作!!!我觉得我只是越来越沮丧,这迫使我错过了一个简单的错误。这有什么问题吗 我的jQuery: $.post( ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php {action: "post-save"}, function(res

使用ajax和wordpress(尝试正确地执行)。这对我来说是相当新鲜的,但我以前的工作更有天赋。似乎随机开始有问题,所以我把我的代码分解到最基本的级别,我甚至不能让它工作!!!我觉得我只是越来越沮丧,这迫使我错过了一个简单的错误。这有什么问题吗

我的jQuery:

$.post(
    ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php
    {action: "post-save"},
    function(response){
      alert(response);
    }
);
我的PHP:

function update_post(){
    echo json_encode(array("success" => "all systems go"), JSON_FORCE_OBJECT ); 
    exit;
}
add_action( 'wp_ajax_post-save', 'update_post' );
最终结果是警报工作,这意味着$.post成功(对吗?),但返回的变量
response
是我主页的html源…

我找到了它

这可能会帮助像我这样犯同样错误的新手,所以我会回答我自己的问题:)

结果发现我没有登录,想想看。不过,这个反应很奇怪,帮助我摆脱了,返回了整个主页。原因是我已经阻止了包含Ajax响应程序的函数文件,如下所示:

function block_users()
{
    if( !current_user_can( 'delete_pages' ) ) {  
        wp_redirect( get_home_url(), 301 );
        exit;
    }
}
add_action('admin_init','block_users');
我本来应该知道要登录的(我本以为是),但是,结果出乎意料,而且是星期五:)

还请注意,任何偶然发现这一点的人:如果您确实希望有人在不登录的情况下执行ajax,请使用wp_ajax的无特权版本wp_ajax_nopriv

add_action( 'wp_ajax_nopriv_action', 'function' );
代替

add_action( 'wp_ajax_action', 'function' );

前者不需要权限(即登录)来执行ajax请求。

我也有同样的问题,解决方案是将DOING_ajax添加到函数中

function block_users()
{
    if( !current_user_can( 'delete_pages' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
        wp_redirect( get_home_url(), 301 );
        exit;
    }
}
add_action('admin_init','block_users');

是的,我有同样的问题,我已经评论了这些行。那么现在就可以了,但是我如何将用户重定向到主页呢?我的函数是函数themeblvd_redirect_admin(){if(!current_user_can('edit_posts')){wp_redirect(site_url());exit;}}}add_action('admin_init','themeblvd_redirect_admin');