Подготовьте предварительную форму для проверки WooCommerce, прежде чем вызывать WooCommerce AJAX. - PullRequest
0 голосов
/ 28 октября 2019

На странице оформления заказа в 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 обрабатывает его, яв недоумении относительно того, работает ли это или нет, и как я могу добиться желаемых результатов.

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