AJAX功能-无法访问wp-admin.php,只能在线访问

时间:2013-06-19 作者:zEd.

我的自定义ajax函数遇到了一些问题。我的控制台日志中有这样一条:“POST-MYSITEURL/wp-admin/admin-ajax.php 302-Found”。所以我的函数不起作用。。。

我真的不明白为什么。

我已经为前端开发了一个登录表单,它可以在我的本地服务器上正常工作,但不能在线工作。以下是我所做的:

function ajax_login_init(){
//First I register my scripts
    wp_register_script(\'ajax-login-script\', get_template_directory_uri() . \'/js/ajax-login-script.js\', array(\'jquery\'),\'\',true ); 
    wp_enqueue_script(\'ajax-login-script\');
//I give them variables
    wp_localize_script( \'ajax-login-script\', \'ajax_login_object\', array( 
        \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
        \'redirecturl\' => \'/account\'
    ));

}

function allowAjaxLogin(){
//I allow the function
        add_action( \'wp_ajax_nopriv_ajaxlogin\', \'ajax_login\' );
        add_action( \'wp_ajax_priv_ajaxlogin\', \'ajax_login\' );

}
add_action( \'init\',\'allowAjaxLogin\' );


if (!is_user_logged_in()) {
    add_action(\'init\', \'ajax_login_init\');
}

function ajax_login(){
// First check the nonce, if it fails the function will break
    check_ajax_referer( \'ajax-login-nonce\', \'security\' );
    // Nonce is checked, get the POST data and sign user on
    $info = array();
    $info[\'user_login\'] = $_POST[\'username\'];
    $info[\'user_password\'] = $_POST[\'password\'];
    $info[\'remember\'] = $_POST[\'remember\'];

    $user_signon = wp_signon( $info, false );
    if ( is_wp_error($user_signon) ){
        echo json_encode(array(\'loggedin\'=>false, \'message\'=>__(\'Wrong username/password\')));
    } else {
        echo json_encode(array(\'loggedin\'=>true, \'message\'=>__(\'Success)));
    }

    die();
}
正如我所说,它在我的本地版本上运行良好,但不是在线版本,有人可以帮助我吗?

2 个回复
最合适的回答,由SO网友:zEd. 整理而成

我终于找到了原因!

这是因为我有2个域,(.com/.be)

当我更新在线数据库时,我必须指向。是与否。com。现在开始工作了!

SO网友:hlim

尝试检查wp admin的文件所有者,它可能是由不同的用户拥有的,并且不允许您读取。

检查文件的权限(如果世界可读)

结束

相关推荐

Using AJAX with Forms

我试图在WordPress中使用AJAX验证并提交表单,但是,我得到的响应是0。根据the codex, 这似乎表明admin ajax无法找到我定义的函数。我做错了什么?代码(为了演示而简化)<script type="text/javascript"> jQuery(function() { jQuery(document).on(\'click\', \'#test-button\', function() {