【问题标题】:WordPress Ajax in plugin returning 0插件中的 WordPress Ajax 返回 0
【发布时间】:2017-07-18 01:17:35
【问题描述】:

我已经阅读了大量类似的问题,但似乎无法弄清楚我遇到的问题。这是我的插件文件(为了获得返回值而进行了简化):

// add JS file
add_action( 'wp_enqueue_scripts', 'ajax_patient_login_enqueue_scripts' );
function ajax_patient_login_enqueue_scripts() {
     wp_enqueue_script( 'patient-login-ajax-scripts', plugins_url( '/js/scripts.js', __FILE__ ), array('jquery'), '1.0', true );

     // this sets up hooks that the javascript file can use to access ajax calls
     wp_localize_script( 'patient-login-ajax-scripts', 'patientlogin', array(
         'ajax_url' => admin_url( 'admin-ajax.php' )
     ));
}

// login user
add_action( 'wp_ajax_nopriv_client_login', 'client_login' );
add_action( 'wp_ajax_client_login', 'client_login' );
function client_login() {
    return 123;
}

我的 JavaScript 加载正确,因为我可以在浏览器中单步执行它。问题似乎归结为它访问“client_login”操作的能力。这是JS:

// handle login
function handleLogin() {
     $.ajax({
        url: patientlogin.ajax_url,
        data: { action: 'client_login' },
        success: function( result ) {
            // other functions...
        }
    });
}

'result' 总是 0,我不知道为什么。浏览器似乎可以毫无问题地找到 ajax_url,但似乎找不到动作。我可能错过了一些明显的东西,但我看不到它,任何帮助将不胜感激。

【问题讨论】:

    标签: ajax wordpress plugins


    【解决方案1】:

    您的回调函数正在返回一个值。回调应该输出一个值。您需要echo123 而不是返回它。最后,拨打wp_die()

    例子:

    function client_login() {
        echo 123;
        wp_die();
    }
    

    文档:https://codex.wordpress.org/AJAX_in_Plugins

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 2017-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多