Поддержка WooCommerce Оформление заказа, остановка

  • Здравствуйте. У меня такой вопрос.

    Средcndfvb ajax, на странице оформление заказа, я отправляю запрос по api и получаю ответ, в зависимости от ответа, я продолжаю работа дальше по оформлению заказа.

    Вопрос в следующем, можно ли средствами ajax, в зависимости от ответа, остановить работу переходить на следующий шаг. То есть получается через javascript остановить работу php скрипта.

    <script type="text/javascript">
                     
                    jQuery(document).ready(function($){
                        
                        $("body").on('click', '.custom-order-btn', function(){
                            
                            $.ajax({
                                type: 'POST',
                                url: '<?php echo admin_url( "admin-ajax.php" ) ?>',
                                data: { action: 'checkaddorderfrontpad'},
                                
                                success : function(results) {
                                    alert(results);
                                    throw 'Result failure';
    /* здесь сделать подобие wp_die(); */
                                },
                                error : function (jqXHR, exception) {
                                    if (jqXHR.status === 0) {
                                        alert('Not connect. Verify Network.');
                                    } else if (jqXHR.status == 404) {
                                        alert('Requested page not found (404).');
                                    } else if (jqXHR.status == 500) {
                                        alert('Internal Server Error (500).');
                                    } else if (exception === 'parsererror') {
                                        alert('Requested JSON parse failed.');
                                    } else if (exception === 'timeout') {
                                        alert('Time out error.');
                                    } else if (exception === 'abort') {
                                        alert('Ajax request aborted.');
                                    } else {
                                        alert('Uncaught Error. ' + jqXHR.responseText);
                                    }
                                }
                            });
                            
                        });
                    });
                </script>

    Спасибо.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Модератор Yuri

    (@yube)

    через javascript остановить работу php скрипта.

    Нельзя. В принципе. К тому времени, когда начинает работать js-скрипт на странице, php-скрипт, сформировавший страницу уже умер.

    Но мне кажется, Вы хотели спросить что-то другое. Например, можно ли остановить сабмит формы? или переход по ссылке.

    Автор maina2008

    (@maina2008)

    Да действительно нужно не осуществлялся переход?

    Так у меня получается проверка, с помощью woocommerce_checkout_order_processed, но вот вывести сообщение об ошибке я не могу в толк взять. Пишу wp_die( Текст ), останавливается , но сообщение не выводится.

    Модератор Yuri

    (@yube)

    Если я правильно понял, то надо остановить обработку клика

    $("body").on('click', '.custom-order-btn', function(e){
        e.preventDefault();
        e.stopPropagation();
        $.ajax({
    .............

    Затем, в зависимости от ответа аякса либо выругаться, либо таки кликнуть

    $(".custom-order-btn").get(0).click();

    Это если там все просто «клик и поехали». Но если клик по .custom-order-btn обрабатывается другим жабаскриптом, нужно как-то (я без понятия — не мой профиль) обеспечить приоритетное выполнение нашего обработчика.

    Автор maina2008

    (@maina2008)

    А как вывести сообщение об ошибке, с помощью action woocommerce_checkout_order_processed, мне нужно если с заказом пошло что то не так, я хочу вывести ошибку. Все получается делать, но вот сообщение об ошибке как вывести?

    Модератор Yuri

    (@yube)

    А как вывести сообщение об ошибке, с помощью action woocommerce_checkout_order_processed,

    Не знаю. Боюсь, что никак. Этот action на текущей странице, если он был, уже выполнился и о нем забыли, отдав html страницы, а к следующей странице, если я правильно понял, перехода быть не должно. Наверно, нужен какой-то другой механизм вывода сообщения.

    Автор maina2008

    (@maina2008)

    Ну я делать буду с помощью ajax

    А как вывести сообщение об ошибке, с помощью action woocommerce_checkout_order_processed, мне нужно если с заказом пошло что то не так, я хочу вывести ошибку.

    Для уведомлений используйте хук woocommerce_checkout_process

    Как-то так:

    add_action( 'woocommerce_checkout_process', 'custom_checkout_error' ); 
    function custom_checkout_error() { 
    	if ( условие... ) {
     
    		wc_add_notice( 
    			sprintf( 'ошибка...'),
    			'error'
    		);
     
    	} 
    }
    • Ответ изменён 12 месяцев назад пользователем kword.
    Модератор Yuri

    (@yube)

    Ну я делать буду с помощью ajax

    Что делать? process_checkout()? На здоровье.

    Автор maina2008

    (@maina2008)

    Спасибо Всем за помощь

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Оформление заказа, остановка» закрыта для новых ответов.