2016-08-08 3 views
0

これは範囲の問題かもしれませんが、すべての基底をカバーしたいと思います。私はAjaxハンドラ関数に値、距離を送信しています。ここでJSは次のとおりです。WPプラグインで複数の関数でAJAX経由で送信されたデータを使用する

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: { 
     'action':'example_ajax_request', 
     'distance' : distance 
    }, 
    success:function(response) { 
     // This outputs the result of the ajax request 
     console.log(response); 
    }, 
    error: function(errorThrown){ 
     console.log(errorThrown); 
    } 
}); 

私はバックエンドで、距離変数へのアクセス権を持っている:

add_action('wp_ajax_example_ajax_request', 'example_ajax_request'); 

add_action('wp_ajax_nopriv_example_ajax_request', 'example_ajax_request'); 

// Dynamic field population 

function example_ajax_request() { 

    // The $_REQUEST contains all the data sent via ajax 
    if (isset($_POST)) { 

     $distance = $_POST['distance']; 
     // echo $distance; 

    } 

    die(); 
} 

$distanceは値が含まれていると私は正常にそれをエコーすることができます。しかし、私は重力の形にフックする別の関数でこの値を使う必要があります。重力の値を動的に設定する必要があります(gform_field_value_$parameter_nameフックを使用)。問題は、Ajax関数の外で$_POST['distance']値にアクセスする方法を理解できず、$_POST['distance']が利用可能になる前にGravity Formsフックが発生するということです(私の推測)。

WPのハンドラ関数の外にある$_POSTオブジェクトを送信したAjaxにアクセスする方法はありますか?私はこれをすべて間違って見ていますか? Gravity Formsフィールドに動的に値を設定するために、その値をどのように使用できるかに関する提案はありますか?

ありがとうございます。ここで

答えて

0

は、私が見つけたものです:WPがすでにロードされているので、フックにAjaxのデータを使用する方法はありません

。そのデータはフロントエンドでのみ利用可能です。そのために、あなたが希望:

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: { 
    'action':'example_ajax_request', 
    'distance' : distance 
    }, 
    success:function(response) { 
    // This outputs the result of the ajax request 
    console.log(response); 
    $('#your-GF-ID').val(response); // This is where you update your GF field 
    }, 
    error: function(errorThrown){ 
    console.log(errorThrown); 
    } 
}); 

他のオプションは、DB内だけアヤックス上記のデータを保存しています。

関連する問題