Задать вопрос
galynsky
@galynsky

Как использовать JSON PHP?

Помогите разобраться с JSON. Не работает. Заранее благодарен.
HTML:
<form class="form-horizontal" id="callback_form" role="form" action="javascript:void(0);">
	<div class="form-group">
		<label for="inputEmail3" class="col-sm-3 control-label">Меня зовут:</label>
		<div class="col-sm-9">
			<input name="callback_name" type="text" class="form-control" placeholder="Введите имя">
		</div>
	</div>
	<div class="form-group">
		<label for="inputEmail3" class="col-sm-3 control-label">Мой телефон:</label>
		<div class="col-sm-9">
			<input type="text" class="form-control" name="callback_phone" placeholder="Введите телефон">
		</div>
	</div>
	<div class="form-group">
		<label for="inputEmail3" class="col-sm-3 control-label">Удобное время:</label>
		<div class="col-sm-9">
			<select name="callback_time" class="form-control">
				<option value="9.00 - 12.00">9.00 - 12.00</option>
				<option value="12.00 - 14.00">12.00 - 14.00</option>
				<option value="14.00 - 16.00">14.00 - 16.00</option>
				<option value="16.00 - 18.00">16.00 - 18.00</option>
			</select>
		</div>
	</div>
	<button type="submit" class="btn btn-primary btn-block">Отправить</button>
</form>

JS:
$('#callback_form').on('submit',function()
		{
			var form_data = $(this).serialize();

			$.ajax({
				url: 'ajax/modal/send_phone.php',
				type: 'POST',
				data: form_data,
				dataType: 'json',
				success: function()
				{
					$('.call_add').hide();
					$('#modal_call .alert-success').show();
				}
			});
		});

PHP:
<?php
$test = json_decode($_POST);
echo $test['callback_name'];
?>
  • Вопрос задан
  • 2820 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
AMar4enko
@AMar4enko
dataType: 'json' в $.ajax сообщает jQuery принудительно трактовать ответ от сервера, как json, вместо того, чтобы использовать для определения типа контента заголовки.
Насколько я понимаю, вы подумали, что этот параметр приказывает отсылает вашу form_data в виде json на сервер.
На самом деле вам не надо делать никаких json_decode($_POST), у вас в $_POST уже и так лежит ассоциативный массив с данными формы. Просто делаете $_POST['callback_name'] и все.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@1Michael1
а по моему json_decode тут не нужен... в $_POST и так будет сериализованная форма...
для пущей уверенности можно в php просто:
print_r($_POST);
Ответ написан
Комментировать
if ((!empty($_POST))&&(isset($_SERVER['HTTP_X_REQUESTED_WITH']))&&($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {
$test = isset($_GET['form_data']) ? json_decode($_GET['form_data']) : '';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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