san_jorich
@san_jorich
Творческий кодер

Как получить и обработать JSON в PHP?

Пишу ajax post запрос на другой сервер\домен с json-данными.
jQuery.ajax({
		 url: url,
		 type: 'POST',
		 data: {	action: "get_genres"	},
		 dataType: 'json',
		 contentType: 'application/json',
		 json: true
		})
		.done(function(data){ console.log(data); });

В обработчике стоит swich на action.
switch (json_decode($_POST['action'])) {	case 'get_genres': get_genres();break;  }

Но action пуст.. var_dump просмотреть не могу, так как запрос "полностью на ajax". На проверку типа:
if(!empty($_POST['data'])) { echo json_encode('true'); } else { echo json_encode('false'); }

if(!empty($_POST['action'])) { echo json_encode('true'); } else { echo json_encode('false'); }

возвращает false
C json-ом сталкиваюсь не часто.. как распарсить $_POST и вынуть $_POST['action'] ?
  • Вопрос задан
  • 1248 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Раз уж хотите json - тогда и отправляйте json:

data: JSON.stringify({ action: 'get_genres' })

А на сервере вместо

json_decode($_POST['action'])

будет

json_decode(file_get_contents('php://input'), true)['action']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
RomaZveR
@RomaZveR
CEO AlertMoney, PHP/Golang Developer
jQuery.ajax({
     url: url,
     type: 'POST',
     data: {	action: "get_genres"	},
     dataType: 'json'
    })
    .done(function(data){ console.log(data); });


switch ($_POST['action']) {
   case 'get_genres': 
       get_genres();
       break;  
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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