Консультация № 141057
30.07.2008, 13:24
0.00 руб.
0 4 3
Здорово, гуру!

Как из php узнать, кушает ли браузер Ajax?
Т.е. как дать на страницу в противном случае другой вариант кода?

Обсуждение

Неизвестный
30.07.2008, 14:02
общий
это ответ
Здравствуйте, Прим Палвер!
Как понять кушает ли Ajax?
Ajax - это технология основанная на объекте XMLHttpRequest. Т.е. если браузером XMLHttpRequest поддерживается, то и Ajax поддерживается.
В приложении функция проверки версии библиотеки XMLRequest.

Приложение:
function httpRequest(reqType,url,asynch){

if(window.XMLHttpRequest){
request = new XMLHttpRequest( );
} else if (window.ActiveXObject){
request=new ActiveXObject("Msxml2.XMLHTTP");
if (! request){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}

if(request){
initReq(reqType,url,asynch);
} else {
alert("Ваш браузер не поддерживает объект XMLHttpRequest");
}
}

function initReq(reqType,url,bool){

request.onreadystatechange=handleResponse;
request.open(reqType,url,bool);
request.send(null);
}
Неизвестный
30.07.2008, 14:03
общий
Браузер "кушает" ajax, если не отключен javascript. Определить на стороне сервера это невозможно.
Наиболее правильный вариант - по умолчанию выводить код без использования JS (на каждое действие отдельная страничка). Далее, если поддерживается javascript, на нужные кнопки и ссылки вешаются обработчики, выполняющие асинхронные действия. Такой способ наиболее универсален, насколько я знаю.
Неизвестный
30.07.2008, 16:23
общий
это ответ
Здравствуйте, Прим Палвер!
Ajax это клиентская технология, на стороне сервера нельзя оределить поддерживает браузер Ajax или нет,
разве что можно угадать посмотрев какой браузер использует пользователь, но и это не 100% вариант т.к у пользователя
может быть отключен JavaScript.

Вы можете послать пользователю проверочную страницу содержащию javascript с проверкой на Ajax:

function AJAXInit()
{
if (window.XMLHttpRequest)
{
try
{
XMLHTTP = new XMLHttpRequest();
}
catch (e) {}
}
else if (window.ActiveXObject)
{
try
{
XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");

}
catch (e)
{
try
{
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}

if (!XMLHTTP)
{
return false;
}
}

если функция вернет false то Ajax не поддерживаеться.
А дальше с помошью условий произвести редирект на нужную вам страницу.
Что - бы не проверять пользователя постоянно пока он гуляет по вашему сайту результат проверки можно записать в
куки с периодом жизни пока не закроеться окно браузера. Ну а если у пользователя отключены и куки, то тут уже
пока не знаю что вам посоветовать.
Удачи!
Неизвестный
30.07.2008, 18:34
общий
это ответ
Здравствуйте, Прим Палвер!
Посмотрите вот эту статью
http://iholder.net/info/uphp1502.html
или то же
http://phpfaq.ru/txt/gilmor/15.htm
Форма ответа