Почему этот вызов AJAX работает непоследовательно? - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь сохранить причины, по которым люди приостанавливают подписку WooCommerce.Я сделал собственный плагин для этого.JS-скрипт запускается, когда пользователь нажимает паузу, открывает диалоговое окно jQuery UI с несколькими причинами в форме переключателя.Нажатие «Пауза» подтверждает выбор пользователя и закрывает окно.Это отлично работает на моем веб-сайте разработки, однако, оно время от времени работает только на моем живом веб-сайте.

Это часть JS:

$(popUpList).dialog({
            modal: true,
            width:'auto',
            text: "text",
            dialogClass: 'fancybox-container',
            buttons: {
                "Pauzeer": function() {
                    for( i = 0; i < document.pauzeerreden.cancelreason.length; i++ ) {
                            if( document.pauzeerreden.cancelreason[i].checked == true ) {
                                    var val = document.pauzeerreden.cancelreason[i].value;
                                    if(val=='other') {
                                            document.pauzeerreden.cancelreason[i].value=document.pauzeerreden.overig.value;
                                            is_other = 1;
                                    }
                            }
                    }
                        $.ajax({
                      url: ajax_object.ajax_url,
                      type: 'POST',
                      data: {'action': 'wcs_cancel_confirmation', 'subscription_id' : subscription_id, 'reason_to_cancel': $('input[name="cancelreason"]:checked').val(), 'is_other': is_other}
                    });
                        window.location = that.href;
                            $(this).dialog("destroy");
                        },
                "Ik wil toch niet pauzeren" : function() {
                        $(this).dialog("destroy");
                        }
                    }
                });
            return false;
    });

И это PHP, на который он публикует:

    if ( is_account_page() ) {
        wp_register_script( 'wcs-cancel-subscription-confirmation-script', plugin_dir_url( __FILE__ ) . 'wcs-cancel-subscription-confirmation.js', array( 'jquery' ), '1.0.0', true );
        $script_atts = array(
            'ajax_url' => admin_url( 'admin-ajax.php' ),
        );
        wp_localize_script( 'wcs-cancel-subscription-confirmation-script', 'ajax_object', $script_atts );
        wp_enqueue_script( 'wcs-cancel-subscription-confirmation-script' );
    }
}
add_action( 'wp_enqueue_scripts', 'wcs_cancel_subscription_confirmation' );


function wcs_cancel_confirmation() {
    $subscription_id = intval( $_POST['subscription_id'] );
    $reason_to_cancel = sanitize_text_field( $_POST['reason_to_cancel'] );
    $subscription = wc_get_order( $subscription_id );
    $email = $subscription->get_billing_email();
    $is_other = $_POST['is_other'];

    $note_id = $subscription->add_order_note( apply_filters( "wcs_cancel_confirmation_note_header", __( "Reden van pauzeren:", "wcs-cancel-confirmation" ) )."<br /><b><i>".$reason_to_cancel."</i></b>" );

    $subscription->save(); }

Код работает, по каким причинам он иногда работает только на моем живом веб-сайте?Пожалуйста, дайте мне знать, если вам нужна большая часть кода JS, я попытался максимально уменьшить его.

Это показано в журналах сервера, когда вызов не запускается:

[Sat Apr 27 18:19:15.040960 2019] [error] [pid 27049] mod_proxy_fcgi.c(860): [client xx.xxx.xxx.xx:62308] AH01071: Got error 'PHP message: -- $action = Array\n(\n    [url] => /mijn-account/view-subscription/111573/?subscription_id=111573&amp;change_subscription_to=on-hold&amp;_wpnonce=ae31aa4954\n    [name] => Pauzeren\n)\n\nPHP message: -- $action = Array\n(\n    [url] => https://fridaymascara.com/mijn-account/?subscription_renewal_early=111573&subscription_renewal=true\n    [name] => Vervroegen\n)\n\n'
[Sat Apr 27 18:19:26.783134 2019] [error] [pid 27049] mod_proxy_fcgi.c(860): [client xx.xxx.xx.xx:62311] AH01071: Got error 'PHP message: -- $action = Array\n(\n    [url] => /mijn-account/view-subscription/111573/?subscription_id=111573&amp;change_subscription_to=active&amp;_wpnonce=da371dce3c\n    [name] => Opnieuw activeren\n)\n\n'

Однако, то же самое регистрируется для вызовов, которые действительно выполняются.Судя по журналу ошибок, что-то не совсем верно в отношении кода PHP или файла .htaccess?

1 Ответ

0 голосов
/ 10 мая 2019

Причиной тому стала перезагрузка страницы до завершения вызова AJAX!

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