Возможно, вы захотите взглянуть на заголовки HTTP, которые получает ваш сервер.
Например, давайте рассмотрим, что у меня есть эта страница:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
$('#test').load('temp.php');
</script>
</body>
</html>
А скрипт temp.php содержит только это:
<?php
var_dump($_SERVER);
die;
При выполнении load
"тест" <div>
будет содержать дамп $_SERVER
; и это будет включать это, среди прочего:
'HTTP_X_REQUESTED_WITH' => string 'XMLHttpRequest' (length=14)
XMLHttpRequest
— это объект, который используется для выполнения запроса Ajax.
Это означает, что вы должны иметь возможность определить, был ли запрос сделан с помощью запроса AJax, примерно так:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&& $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
echo "Ajax";
} else {
echo "Not Ajax";
}
При этом вы можете определить, вызывается ли ваша страница «обычно» или через запрос Ajax, и решить, должны ли вы включать макет или нет.
Кстати: именно это решение используется, например, Zend Framework для обнаруживать запросы Ajax.
person
Pascal MARTIN
schedule
26.09.2009