【问题标题】:Ajax query string conditionalAjax 查询字符串条件
【发布时间】:2014-03-26 09:56:42
【问题描述】:

我创建了一个使用 ajax 登录用户并验证凭据的登录页面。

如果用户已被禁用,那么我想显示一条消息,说明该用户已被禁用。当我通过 jquery 发布时,我发布到一个名为 admin-ajax.php 的页面

如果用户被禁用,我会得到 /wp-login?disabled=1 的返回 url 如何修改我的脚本以查看 GET 是否已禁用,如果确实如此,则更改按钮文本。

jQuery('#wp-submit').on( 'click',function(){

    var clicked = jQuery(this);


    clicked.val('Logging In...');

    var commit = clicked.parent().parent().serialize();

    var data = {
        action: 'ts_dash_action',
        screen: 'sign_on',
        param: { form : commit
           /* log: 'admin', pwd: 'pass','wp-submit': 'Log In',redirect_to: 'http:/.beresponsive.net',testcookie:1*/
        }};

    jQuery.post(dash_ajax.ajaxurl, data, function(response) {
        //clicked.val(response);
        if(response == 'Error - Retry') {
            clicked.addClass('button-error');
            setTimeout(function(){
                clicked.val('Login');
                clicked.removeClass('button-error');
            },2000);
        } else if(response == 'Redirecting...'){
            window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
            window.location = window.location.origin;
        } else if ([THE GET HAS A PARAMATER OF 'DISABLED']) {     
                clicked.addClass('button-error');
                clicked.val('Email no valid')
        } 

    });
    return false;
}); 

这里是页面,http://goo.gl/5j1lEx,被禁用的账号是用户名:dis,pass:dis

【问题讨论】:

    标签: javascript php ajax wordpress query-string


    【解决方案1】:

    实际上,您无法在 jquery ajax 响应中处理 302 重定向。您需要为wordpress编写自己的ajax登录代码;

    functions.php

    add_action( 'init', 'custom_ajax_login' );
    
    function custom_ajax_login() {
    
        wp_register_script( 'ajax-login-js', plugin_dir_url( __FILE__ ) . 'js/ajax-login.js', array('jquery') );
    
        wp_enqueue_script( 'ajax-login-js' );
    
        wp_localize_script( 'ajax-login-script', 'dash_ajax', array(
            'ajaxurl' => admin_url( 'admin-ajax.php' ),
            'redirecturl' => home_url()
        ));
    
        add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );
    }
    
    function ajax_login() {
        check_ajax_referer( 'ajax-login-nonce', 'security' );
        $login_form_data = array();
        $login_form_data['user_login'] = $_POST['username'];
        $login_form_data['user_password'] = $_POST['password'];
        $login_form_data['remember'] = true;
    
        $user_data = wp_signon( $login_form_data, false );
    
        if ( is_wp_error( $user_data )) {
            $response = array(
                'loggedin'=> false,
                'message'=> $user_data->get_error_message()
            );
        } else {
            $response = array(
                'loggedin'=> true,
                'message'=> __('Login success!' )
            );
        }
        echo json_encode( $response );
    
        die();
    }
    

    在你的ajax-login.js

    jQuery(document).ready(function($){
    
        $('#login_form').on('submit', function(e){
            $('#login_form p.status').show().text("Sending request...");
            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: dash_ajax.ajaxurl,
                data: { 
                    'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
                    'username': $('#username').val(), 
                    'password': $('#password').val(), 
                    'security': $('#security').val() },
                success: function(data){
                    $('#login_form p.status').text(data.message);
                    if (data.loggedin == true){
                        document.location.href = dash_ajax.redirecturl;
                    }
                }
            });
            e.preventDefault();
        });
    });
    

    【讨论】:

      【解决方案2】:

      最简单的方法是添加另一个条件,这样如果不是这两个条件中的任何一个,它就必须是第三个选项。虽然我不能轻易检测到它,但我可以排除它

      jQuery('#wp-submit').on( 'click',function(){
      
          var clicked = jQuery(this);
      
      
          clicked.val('Logging In...');
      
          var commit = clicked.parent().parent().serialize();
      
          var data = {
              action: 'ts_dash_action',
              screen: 'sign_on',
              param: { form : commit
                 /* log: 'admin', pwd: 'pass','wp-submit': 'Log In',redirect_to: 'http:/.beresponsive.net',testcookie:1*/
              }};
      
          jQuery.post(dash_ajax.ajaxurl, data, function(response) {
              //clicked.val(response);
              if(response == 'Error - Retry') {
                  clicked.addClass('button-error');
                  setTimeout(function(){
                      clicked.val('Login');
                      clicked.removeClass('button-error');
                  },2000);
              } else if(response == 'Redirecting...'){
                  window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
                  window.location = window.location.origin+'/edit-profile/';
              } else {     
                      clicked.addClass('button-error');
                      clicked.val('Email not confirmed')
              } 
      
          });
          return false;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 2020-04-08
        • 2015-02-16
        相关资源
        最近更新 更多