Как узнать, что поступил JSON запрос на PHP?

Есть ли возможно узнать что поступил Ajax запрос для получения JSON.
Я наверное не правильно выразился.

Суть такова.
Есть некий каталог, при заходе нужно сделать так что бы страница открылась а товары подгружались. Вот думаю есть ли возможность узнать что на сервер поступил ajax запрос для получения JSON
  • Вопрос задан
  • 5200 просмотров
Решения вопроса 1
kirillplatonov
@kirillplatonov
Ruby on Rails developer
<?php
if (! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  print "Поступил Ajax-запрос";
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
valerium
@valerium
Изобретая велосипед
@dpr дал неплохой совет, но если так уж хочется скрыть кухню от пользователя, то почему бы не воспользоваться встроенными в протокол HTTP возможностями?

На стороне клиента
xmlhttp.setRequestHeader('Accept', 'application/json');


На стороне сервера
if ($_SERVER['HTTP_ACCEPT'] == 'application/json') {
    // тут генерируем JSON
} else {
    // тут генерируем HTML
}


Использование HTTP-заголовка Accept предпочтительнее, чем HTTP_X_REQUESTED_WITH, потому что
  1. вы точно знаете, что передали заголовок ручками, а не полагаетесь на разработчиков браузера,
  2. используете более старую и устоявшюся (но не устаревшую) возможность, встроенную в протокол,
  3. оставляете себе задел на использование других представлений, например, XML, CVS, Plain text и т. д.
Ответ написан
Ваш ответ на вопрос

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

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