Есть ли все-таки, чтобы проверить, является ли входящий запрос AJAX JSON?
Я пытался
if(($_SERVER['REQUEST_METHOD']=='JSON')) { }
Но это не сработало.
Есть предположения?
Где вы принимаете запросы, точно, что вы не знаете?
У вас может быть функция в начале скрипта, который пытается импортировать данные как JSON или simplexml. Если он поймает ошибку, вы знаете, что это другая …
Во-вторых, попробуй, чтобы это было JSON, simplexml выведет ошибку по множеству причин.
$json_request = (json_decode($request) != NULL) ? true : false;
Вам нужно будет установить заголовок с клиентской стороны. В jQuery и других библиотеках задан заголовок x-requested-with
:
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { echo "Ajax request"; }
Вы можете проверить заголовок X-Requested-With
, некоторые библиотеки, например jQuery, установите его в "XMLHttpRequest"
.
$isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';
Вы можете сделать проверку на accept param, если это текст / javascript вашего говорящего json, если это текст / xml, угадайте, что: P
$ _SERVER [ 'HTTP_ACCEPT']
Попробуйте json_decode ()
вы всегда можете установить дополнительный заголовок, указав это, или использовать произвольную переменную для указания запросов JSON.