На странице оформления заказа в WooCommerce я хотел бы отправить данные в базу данных через AJAX, а затем после сохранения данных скрыть форму. Затем клиент заполнил бы оставшуюся часть формы как обычно.
Из того, что я обнаружил до сих пор, кажется, что моя отправка в форме сбора данных вызывает wc-ajax=checkout
. Что я хочу сделать только после того, как эта первоначальная форма была отправлена и скрыта.
Пожалуйста, то, что я тестировал ниже.
HTML
<form class="test1-form" name="group" method="post" action="<?php echo admin_url( 'admin-ajax.php' ); ?>">
<label for="test1">test1</label>
<span class="hint">hint</span>
<input type="text" class="input-text" name="test1" id="test1">
<input type="hidden" name="action" value="custom_action">
<label for="test2">test2</label>
<span class="hint">hint</span>
<input type="text" class="input-text" name="test2" id="test2">
<input type="submit" class="button alt" name="testing" id="place_order" value="Submit" data-value="submit" />
</form>
jQuery
jQuery('.testing-form').on('submit', function(e) {
e.preventDefault();
var $form = jQuery(this);
jQuery.post($form.attr('action'), $form.serialize(), function(data) {
alert('This is data returned from the server ' + data);
}, 'json');
});
PHP
add_action( 'wp_ajax_custom_action', 'test_action' );
add_action( 'wp_ajax_nopriv_custom_action', 'test_action' );
function test_action() {
$response = array(
'error' => false,
);
if (trim($_POST['test1']) == '') {
$response['error'] = true;
$response['error_message'] = 'Email is required';
// Exit here, for not processing further because of the error
exit(json_encode($response));
}
exit(json_encode($response));
}
Так как это вызвало вызов AJAX WooCommerce, яснял с регистрации скрипт оформления заказа. Затем, после вызова моего AJAX, я повторно поставил в очередь скрипт проверки, чтобы он мог обрабатывать форму проверки как обычно.
Из-за моего неопытного опыта работы с AJAX и особенно того, как WooCommerce обрабатывает его, яв недоумении относительно того, работает ли это или нет, и как я могу добиться желаемых результатов.