Jquery Ajax成功消息返回我的主页的HTML
使用ajax和wordpress(尝试正确地执行)。这对我来说是相当新鲜的,但我以前的工作更有天赋。似乎随机开始有问题,所以我把我的代码分解到最基本的级别,我甚至不能让它工作!!!我觉得我只是越来越沮丧,这迫使我错过了一个简单的错误。这有什么问题吗 我的jQuery: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
$.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');