@nickname6847

Как принять данные AJAX в PHP?

не могу понять, почему не получаю данные в PHP...

Вот форма:
<form class="ajaxForm" method="POST" action="/mailto.php">
	<div class="row mt-4">

		<input type="hidden" name="type_form" value="Заявка">

		<div class="input-group col-lg-6 mb-3">
			<span class="flaticon-user-avatar"></span>
			<input type="text" name="name" class="form-control" placeholder="Ваше Имя*" required>
		</div>

		<div class="input-group col-lg-6 mb-3">
			<span class="flaticon-email"></span>
			<input type="text" name="email_orig" class="form-control" placeholder="Ваша Почта*">
		</div>

		<div class="input-group col-lg-12 mb-3">
			<span class="flaticon-customer-service"></span>
			<input type="text" name="phone" class="form-control js-mask" placeholder="Ваш номер*" required>
		</div>

		<div class="input-group col-lg-12 mb-3">
			<span class="flaticon-help"></span>
			<input type="text" name="message_orig" class="form-control" placeholder="Ваш вопрос">
		</div>

		<div class="col-lg-12 mt-4 d-flex align-middle">
			<button type="submit" class="btn-accent btn-accent-2 btn-lg">Отправить</button>
		</div>

	</div>
</form>

Вот AJAX:
$('.ajaxForm').submit( function(e) {

	e.preventDefault();

	var method = $(this).attr('method'),
	      action = $(this).attr('action'),
	      f_data = $(this).serialize();

	console.log(f_data);
 /* Тут получаю: type_form=%D0%97%D0%B0%D1%8F%D0%B2%D0%BA%D0%B0%20%D0%BD%D0%B0%20%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%83%D1%8E%20%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%86%D0%B8%D1%8E%2C%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81&name=%D0%AD%D0%BC%D0%B8%D0%BB%D1%8C%20%D0%A0%D0%B0%D1%85%D0%BC%D0%B0%D1%82%D1%83%D0%BB%D0%BB%D0%B8%D0%BD&email=&email_orig=mail%40mail.ru&phone=%2B7%20(901)%20000-00-00&message=&message_orig= */

	$.ajax({
		type: method,
		url: action,
		contentType: 'json',
		data: f_data,
		success: function(response) {
			console.log(response);
     // Тут получаю пустоту NULL
		},
		error: function(jqXHR, textStatus, errorThrown) {
			console.log('Ошибка: ' + textStatus + ' | ' + errorThrown);
		}
	});

});

Вот PHP:
// Сам $_POST показывается либо как [], либо как Array
$data = json_decode($_POST['data']);
//Вообще ничего нет, пусто
var_dump($data);
exit;
  • Вопрос задан
  • 1028 просмотров
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
Убери contentType: 'json',, то что ты отправляешь - это явно не JSON. Почитай документацию jQuery.ajax()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Randewoo
салам пополам
before:
$data = json_decode($_POST['data']);
//Вообще ничего нет, пусто
var_dump($data);
exit;

after:
var_dump($_POST);
Ты не передавал в POST параметре JSON, соответственно, фунции json_decode() нечего декодировать.
Ответ написан
Ваш ответ на вопрос

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

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