Я пытаюсь выполнить несколько 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
, кажется, мало что делает и ничего синхронного.
Я уверен, что есть что-то супер элементарное, что мне не хватает, но я не могу его найти.