воскресенье, 30 ноября 2008 г.

Ajax or Not Ajax

Такой вот первый простой пост. Тут я расскажу наверное для многих очевидное: как определить на стороне сервера ajax или обычный запрос пришел вам не сервер. Для начала зачем это нужно. Лично я при реализации проектов использую MVC-модель. Что это такое рассказывать не буду, кто не знает может прочитать, а кто знает, ну тот знает. Так вот, когда создаешь очередной сайт, то не хочется ставить кучу if при выводе блоков. Поэтому я использую разные шаблоны для обычных запросов и для ajax. Коротко поясню: если вы просто в браузере наберете mysite.com, то сервер поднимет шаблон с именем home_page.tpl, в которм будет и и и , если же это будет ajax, то он обратится к шаблону, например home_page.ajax.tpl, который, если утрировать вернет только и его содержание. Ну вот в принципе и все. Пример приведу без MVC и прочей ерунды, просто чтобы показать что оно работает :)
Итак, сама функция (реализация на php) :

<?php
function isAjax()
{
   $allHeaders = getallheaders();
        foreach ( $allHeaders as $name => $value )
        {
            if ( strtolower($name) == 'x-requested-with' && $value == 'XMLHttpRequest' )
            {
               return true;
            }
        }
return false;
}
?>

Пример работы( Самый простой, написанный сразу здесь, в текстовом редакторе, не претендующий ни на что):

<?php
if(!isAjax()) {
?>
<html>
<head>
<title>Обычная страничка </title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
Хелло ворлд!!!
</body>
</html>
<?php
}
else
{
   print 'А вот и я - Ajax responce';
}
?>

Комментариев нет: