Если вы не знаете, чтто такое ajax, то гугл вам поможет. Если вы уже знаете, что это, но не уверены, что знаете, с чем это едят, и стоит ли вообще участвовать в трапезе, то у меня таки есть сказать вам пару слов.
Ajax нужет там и только там, где он действительно нужен. Там, где требуется обновление содержимого страницы без ее полной перезагрузки. Например, на сайте аэропорта в таблице прибывающих рейсов, отображающей оставшееся до прилета время. Или на сайте биржевых котировок. Или в консолях управления, позволяющих выполнять какие-то действия одновременно, так в gmail благодаря ajax можно писать письмо в то время как происходит загрузка вложений.
Ajax однозначно не нужен для решения других задач. Некоторое время назад мне предложили использовать ajax с целью не заботиться о переносе и отображении данных, вводимых в полях формы, при перезагрузке страницы. Маразм? Безусловно!
Роботы поисковиков равнодушны к ajax и в своем высокомерии просто обойдут динамически обновляемые данные стороной. Примем к сведению.
Всегда важно проверять передаваемые данные, следить за допустимой длиной параметров и их содержанием (проверка на клиентской части желательна, а на серверной - обязательна!), ajax не исключение. Но в ajax также важно следить за возвращаемыми данными и предусмотреть скрипт на клиентской стороне, который корректно отобразит сообщения о возникших сбоях как на уровне http сервера, так и в результате выполнения кода на серверной части.
Не стоит забывать о слабостях отдельных браузеров. Так, всеми любимый интернет эксплорер по-умолчанию "автоматически" решает, брать ли запрашиваемые данные с сервера или из собственного кеша. Поскольку не все пользователи знают о коварстве настроек эксплорера, разработчикам следует позаботиться и "убедить" эксплорер в том, что каждый запрос следует отсылать на сервер.
И еще один немаловажный факт: мобильная версия интернет эксплорера для КПК вполне справляется с веб-сайтами, абсолютно никак не оптимизированными для мобильных устройств. С большими или меньшими огрехами будет отображен практически любой сайт. Но ajax не поддерживается.
Ну и совсем азы, для начинающих - поскольку наш мир далек от идеала, разные браузеры используют разные объекты. Ниже привожу код, удовлетворяющий большинство браузеров.
function loadXMLDoc(url) { req = false; if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } if(req) { req.onreadystatechange = processReqChange; req.open("GET", url , true); req.send(""); } return true; }
![]()
![]()
![]()
Если вам понравилась эта статья, возможно, будут интересны и другие, а также моя книга и мой видео-блог. За рекламным баннером ниже тоже может быть что-то полезное.
Я.Б.