AnDrIYQ
@AnDrIYQ
Неудачник

400 BAD REQUEST. (Ajax Wordpress) Что я делаю не так?

Кароч написал лэндинг, задача реализовать форму обратной связи на PHP используя JQuery AJAX. И причем что сайт идет как тема для WordPress. Сделал все как в доке, использовал admin-ajax.php, Итог: Возвращает ошибку (Bad Request 400). Код снизу. Может кто знает где я про втыкал.

HTML:

<div class="form-block">
						<form action="" id="header-form"  method="post" class="form">
							<label class="title">ЗАМОВТЕ БЕЗКОШТОВНУ КОНСУЛЬТАЦІЮ</label>
							<label ><span>Ім'я *</span><input autocomplete="off" type="text" name="send_name"></label>
							<label><span>Телефон *</span><input autocomplete="off" placeholder="+38(XXX) XX-XX-XXX" type="text" name="send_phone"></label>
							<label><span>Додаткова інформація</span><input autocomplete="off"  type="text" name="send_info"></label>
							<label><input type="submit" name="subm" value="ЗАМОВИТИ ДЗВІНОК"></label>


JS :

$ ('#header-form').on('submit', function (e) {
				e.preventDefault();
				
				var inf = {
					name: $ ('input[name="send_name"]').val(),
					phone: $ ('input[name="send_phone"]').val(),
					info: $ ('input[name="send_phone"]').val()
				};
				
				$.ajax ({
					url: '<?php echo admin_url('admin-ajax.php') ?>',
					type: 'POST',
					data: inf,
					contentType: 'application/json',
					dataType: 'json',
					beforeSend: function () {
						alert('<?php echo admin_url('form-ajax.php'); ?>');
				},
					success: function (err) {
					 $ ('input[name="send_name"]').css('display', 'none');
				},
					error: function (err, rex, ww) {
						alert ('Otladka');
					console.log (err);
					console.log (rex);
					console.log (ww);
				}
				});
			});


PHP (functions.php темы)

add_action ('wp_ajax_sendf', 'sendf');
add_action ('wp_ajax_nopriv_sendf', 'sendf');

function sendf () {
	
	$result = array ();
	
	echo json_encode ($result);
	exit;
}
  • Вопрос задан
  • 3523 просмотра
Решения вопроса 1
@asnever
У вас в поле data отсутствует action. Нужно так:
var inf = {
          action: 'sendf',
          name: $ ('input[name="send_name"]').val(),
          phone: $ ('input[name="send_phone"]').val(),
          info: $ ('input[name="send_phone"]').val()
        };
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
Если Chrome, то нажмите F12, далее во вкладку Network и найдите ваш запрос.
Есть подозрение, что это csrf.
Он у Вас отсутствует в запросе.
Ответ написан
Ваш ответ на вопрос

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

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