@Alexander9229

Почему на работает ajax на WordPress?

Пытаюсь настроить форму на WordPress - ссылка на сайт(самая первая форма под оффером).
Пробовал изначально настроить СF7, но она не заработала + при отправке постоянно перезагружала страницу.
Решил попробовать такой вариант с Ajax, но опять что-то не так.
Перечитал полно документации, но пока что ничего не помогло.
Страница постоянно перезагружается при отправке, перебрасывая меня на этот адресс

Такое ощущение, что не работает preventDefault();

html
<form action="<?php echo admin_url( 'admin-ajax.php' ); ?>" >
        <input type="hidden" name="action" value="forms">
        <div class="form-offer__body">
            <div class="form-offer__group">
                <input type="text" name="user_name" data-validate-field="user_name" class="input form-offer__input input--primary" placeholder="Имя">
            </div>
            <div class="form-offer__group">
                 <input type="tel" name="user_phone" data-validate-field="user_phone" class="input form-offer__input input--primary" placeholder="Номер телефона">
            </div>
            <div class="form-offer__group">
                 <button class="button form-offer__button button--primary" type="submit">Отправить заявку</button>
             <div class="policy form-offer__policy">
                   <input type="checkbox" name="user_checkbox" id="policy-checkbox-form-offer" class="policy__checkbox" checked>
                   <label for="policy-checkbox-form-offer" class="policy__label">Даю согласие на <a href="#" class="policy__label-link"> обработку данных</a></label>
             </div>
          </div>
    </div>
</form>


jQuery
$( 'form' ).on( 'submit', function ( event ) {
    event.preventDefault();

    $.ajax( {
        type: "POST",
        url: $( this ).attr( 'action' ),
        data: $( this ).serialize(),
        success: function ( response ) {
            var form = document.querySelectorAll( 'form' );
            let event = new Event("reset");
            form.forEach( function ( item ) {
                item.dispatchEvent( event );
            } );
        },
        error: function ( response ) {
            console.error('Что-то пошло не так. Ошибка' + response);
        }
    } );
} );


functions.php
add_action( 'wp_ajax_forms', 'submit_form' );
add_action( 'wp_ajax_nopriv_form', 'submit_form' );

function submit_form() {
	$data = file_get_contents( 'php://input' );
	$data_str = parse_str( $data, $output );
	foreach ( $output as $key => $value) {
		echo $key . ' - ' . $value;
	}
}


Подскажите пожалуйста, в чем может был эта проблема?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
lamer350
@lamer350
กำลังสูงสุด
wp_ajax_nopriv_forms

А страница у вас перезагружается потому что:
1. пытались оптимизировать код с поомощью плагинов/инструкция из интернета и убили rest API
2. ошибка в htaccess так же приводит к такой же проблеме
Ищите проблему где то тут
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы