AJAX или каждый ... как он хочет

Если вы не знаете, чтто такое 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;
}




Если вам понравилась эта статья, возможно, будут интересны и другие, а также моя книга и мой видео-блог. За рекламным баннером ниже тоже может быть что-то полезное.


Я.Б.