@trenton

Форма на wordpress с ajax обработчиком, при нажатии на кнопку белый экран, в чем ошибка?

Знать бы - я ошибаюсь в коде или очередная опечатка. Оно переходит при клике на site-name.com/wp-admin/admin-ajax.php?action=send_mail, но белый экран. В консоли Unchecked runtime.lastError: The message port closed before a response was received. site-name.com/wp-admin/admin-ajax.php?action=send_mail

HTML формы:
<form id="pp_booking_form" method="post" action="<?php echo admin_url('admin-ajax.php?action=send_mail') ?>" >
                          <input type="hidden" id="action" name="action" value="pp_booking_mailer">
                            <input type="hidden" id="tour_title" name="tour_title" value="East Europe">
                            <input type="hidden" id="tour_url" name="tour_url" value="index.php">

                            <div class="one_half">
                                <label for="first_name">First Name</label>
                                <input id="first_name" name="first_name" type="text" class="required_field" required>
                            </div>

                            <div class="one_half last">
                                <label for="last_name">Last Name</label>
                                <input id="last_name" name="last_name" type="text" class="required_field" required>
                            </div>

                            <br class="clear">
                            <br>

                            <div class="one_half">
                                <label for="email">Email</label>
                                <input id="email" name="email" type="text" class="required_field" required>
                            </div>

                            <div class="one_half last">
                                <label for="phone">Phone</label>
                                <input id="phone" name="phone" type="text">
                            </div>

                            <br class="clear">
                            <br>

                            <div class="one">
                                <label for="message">Additional Message</label>
                                <textarea id="message" name="message" rows="7" cols="10" required></textarea>
                            </div>

                            <br class="clear">

                            <div class="one">
                                <p>
                                    <input id="booking_submit_btn" type="submit" value="Book By Email">
                                </p>
                            </div>
                        </form>

JQuery
jQuery(document).ready(function($) {
 var form = $('#pp_booking_form');
 var action = form.attr('action');

 form.on('submit', function(event) {
var formData = {
	first_name: $('#first_name').val(),
	last_name: $('#last_name').val(),
	email: $('#email').val(),
	phone: $('#phone').val(),
	message: $('#message').val()
};


$.ajax({
	url: action,
	type: 'POST',	
	data: formData,
	error: function() {
     form.html("Ваш тур не забронирован");
	};

	sussess: function() {
		form.html("Ваш тур забронирован");
	}
});

event.preventDefault();

 });
});


В functions.php подключается так
wp_enqueue_script( 'form_js', get_template_directory_uri() . '/assets/js/form.js', null, ['jquery'], true);


Ниже в том же файле функций это:
add_action( 'wp_ajax_send_mail', 'send_mail' );
add_action( 'wp_ajax_nopriv_send_mail', 'send_mail' );

function send_mail() {
	$first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
	$email = $_POST['email'];
	$phone = $_POST['phone'];
	$message = $_POST['message'];

	$to = get_option( 'admin_email');
	$subject = 'Письмо без темы';

	remove_all_filters( 'wp_mail_from');
	remove_all_filters( 'wp_mail_from_name' );

$headers = array(
	'From: Me Myself <me@example.net>',
	'content-type: text/html',
	'Cc: John Q Codex <jqc@wordpress.org>',
	'Cc: iluvwp@wordpress.org', // тут можно использовать только простой email адрес
);

wp_mail( $to, $subject, $message, $headers );
wp_die();
};


Верстал не я, и на самом деле я не знаю что значат эти поля
<input type="hidden" id="action" name="action" value="pp_booking_mailer">
                            <input type="hidden" id="tour_title" name="tour_title" value="East Europe">
                            <input type="hidden" id="tour_url" name="tour_url" value="index.php">

Но даже если их закомментировать, то белый экран.
Помогите разобраться пожалуйста!
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
Включите отображение ошибок на экран и увидите все косяки в скрипте
Белый экран - скорее всего фатальная ошибка, которая и прекращает выполнение скрипта
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы