2017-07-18 13 views
0

私は同様の質問をたくさん読んだが、私が抱えている問題を理解していないようだ。ここでは(単に戻り値を取得するために簡略化され)私のプラグインファイルがあります:私は、ブラウザでそれをステップ実行することができるよのでプラグインが0を返すWordPress Ajax

// 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... 
     } 
    }); 
} 

「結果」は常に0です。理由はわかりません。ブラウザは問題なくajax_urlを見つけたようですが、アクションを見つけることができません。私はおそらく明らかに何かを見逃してしまったでしょうが、私はそれを見ることができず、どんな助けも大いに評価されるでしょう。

答えて

2

あなたのコールバック関数が値を返しています。コールバックは代わりに値を出力する必要があります。返す代わりにecho 123が必要です。最後にwp_die()に電話してください。

例:

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

ドキュメント:私はそれは単純なものであることを知っていたhttps://codex.wordpress.org/AJAX_in_Plugins

+0

。ありがとう!!! – Nate

関連する問題