2016-08-08 47 views
0

Dies könnte ein Problem sein, aber ich möchte alle Grundlagen abdecken. Ich sende erfolgreich einen Wert, Entfernung, an eine Ajax-Handler-Funktion. Hier ist die JS:Verwenden von Daten, die über AJAX in mehreren Funktionen auf einem WP-Plugin gesendet werden

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

Ich habe Zugriff auf die Entfernung Variable im Backend:

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 den Wert enthält, und ich kann es erfolgreich Echo. Aber ich muss diesen Wert in einer anderen Funktion verwenden, die sich in Gravitationsformen einklinkt. Ich muss einen Schwerkraftformularwert dynamisch setzen (unter Verwendung ihres gform_field_value_$parameter_name Hakens). Das Problem ist, dass ich nicht herausfinden kann, wie ich auf den $_POST['distance'] Wert außerhalb der Ajax-Funktion zugreifen kann und der Gravity Forms-Haken ausgelöst wird, bevor die $_POST['distance'] verfügbar ist (meine Vermutung).

Gibt es eine Möglichkeit, auf das Ajax gesendet $_POST Objekt außerhalb der Handler-Funktion in WP zuzugreifen? Betrachte ich das alles falsch? Irgendwelche Vorschläge, wie ich diesen Wert verwenden kann, um ein Gravity Forms-Feld dynamisch zu füllen?

Vielen Dank im Voraus.

Antwort

0

Hier ist, was ich herausgefunden habe:

Es gibt keine Art und Weise ist Ajax Daten in einem Haken zu verwenden, da WP bereits geladen ist. Diese Daten sind nur im Frontend verfügbar. Zu diesem Zweck würden Sie:

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

Die andere Option speichert die Daten in der DB und nur vor Ajax.