Мне нужно по-разному разобраться с этими двумя случаями, есть ли хорошее решение?
if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { /* ajax request */ }
Я могу придумать 2 способа сделать это:
На стороне AJAX вы можете установить собственный заголовок HTTP с помощью XMLHttpRequest.setRequestHeader(), а затем проверить наличие этого заголовка на стороне PHP с помощью getallheaders() чтобы указать, что запрос был сделан клиентом AJAX. Если ваш php-скрипт не находит пользовательский заголовок, вы можете считать его не-AJAX-запросом.
XMLHttpRequest.setRequestHeader()
getallheaders()
Когда вы создаете запрос в своем коде, вы можете просто прикрепить переменную строки запроса, чтобы указать природу запроса. например. http://example.com/process?ajax=true для запроса AJAX или http://example.com/process?ajax=false для запроса без AJAX.