Ajax or Not Ajax

Тут я писал как-то каким образом определить ajax-запрос от не ajax-запроса. Но буквально сегодня ставил один проект на live-server и вот что случилось: у них php настроено как CGI приложение, и в этом случае функция getallheaders не работает :((. Поэтому функция isAjax() приведенная в прошлом посте по данной теме притерпит изменения, а именно. Теперь признаком того, что мы получили ajax-запрос будет являться наличие переменной $_SERVER[‘HTTP_X_REQUESTED_WITH’] равной все тому же ‘XMLHttpRequest’.

Теперь давайте изменим нашу функцию:

function isAjax()
{
	if( function_exists('getallheaders'))
	{
		$allHeaders = getallheaders();
		$var_key = 'x-requested-with';
		$var_value = 'XMLHttpRequest';
	}
	else
	{
		$allHeaders = $_SERVER;
		$var_key = 'http_x_requested_with';
		$var_value = 'XMLHttpRequest';
	}

	foreach ( $allHeaders as $name => $value )
	{
		if ( strtolower($name) == $var_key && $value == $var_value)
		{
			return true;
		}
	}
	return false;
}

пользуйтесь на здоровье 🙂

P.S. я бы не советовал настраивать php как cgi, так оно конечно проще, но простое не всегда лучшее.

Ajax or Not Ajax: 2 комментария

Обсуждение закрыто.