Сброс переменных PHP после прохождения переменных javascript через пост AJAX - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь выполнить несколько SQL-запросов, используя PHP в Wordpress, для автоматического заполнения и проверки значений в гравитационной форме по существующей базе данных.

Однако для этого мне понадобитсяпередать некоторые переменные javascript в php, а затем использовать их для взаимодействия и вернуть эти данные обратно в форму.Как человек с минимальным опытом веб-разработки, легче сказать, чем сделать.

Моя главная проблема - вызов AJAX, который правильно переносит значение, но только в функцию действия.Все остальные вызовы будут показывать ноль (я полагаю, из-за ограниченности, но глобальные переменные, похоже, не помогают).

Основной соответствующий PHP в пользовательском плагине выглядит следующим образом:

$address = 0;

function my_enqueue() {
    wp_register_script( 'lead-scheduler', null);
    wp_enqueue_script( 'lead-scheduler', plugins_url( '/lead_ajax.js', __FILE__ ), array('jquery') );
    wp_localize_script( 'lead-scheduler', 'leadajax', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );

    wp_enqueue_script( 'jquery' );
    wp_register_script( 'lead_ajax', null);
    wp_enqueue_script( 'lead_ajax' );
 }
add_action( 'init', 'my_enqueue' );

function handle_request(){
    //Check post address, then apply to global variable
    echo $_POST['address'] . "\n";
    global $address;
    $address = $_POST['address'];
    echo $address . "\n";
    wp_die("RIP");
}

add_action( 'wp_ajax_handle_request', 'handle_request' );
add_action( 'wp_ajax_nopriv_handle_request', 'handle_request' ); 

function functionCaller() {
    if (is_page ('')) { 
        ?>
            <script type="text/javascript">
            jQuery(document).ready(function ($) {
                $(function(){

                    var addressField = document.getElementById('input_22_2');
                    var temp;

                    //Set up event listener
                    addressField.onchange = addressCheck;

                    function addressCheck(){
                        //Get foreign script
                        $.getScript("/wp-content/plugins/lead-scheduler/lead_ajax.js", function(){
                            //Wait until done to execute console.log
                            $.when(adrCheck()).done(function(){
                                console.log("Logging: " + "<?php global $address; echo $address ?>");
                            });
                        });
                    }
                });
            });
            </script>
        <?php
    }
}
add_action('wp_head', 'functionCaller'); ?>

Вызов AJAX происходит из файла JS, к которому я обращаюсь:

//AJAX
function adrCheck(){
    jQuery(document).ready( function() {
        console.log("called")
        var addressField = document.getElementById('input_22_2').value;
      jQuery.ajax({
         type : "post",
         url : leadajax.ajax_url,
         data : {action: "handle_request", address: addressField},
         success: function(response) {
            console.log(response)
         },error: function(response){
            console.log(response);
        }
      })   
    })
}

Кажется, что вызов работает, поскольку эхо в handle_request() работает нормально.Но вызов этой переменной где-либо еще возвращает ноль.$.when.done, кажется, мало что делает и ничего синхронного.

Я уверен, что есть что-то супер элементарное, что мне не хватает, но я не могу его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...