просто о сложном


Почему не стоит всё делать через AJAX

tags: ajax, javascript

Ни что не совершенно и AJAX не исключение. Как и все остальные технологии он обладает рядом недостатков, актуальных на момент написания статьи.

Вот они:

  • Поисковая оптимизация. Если вы решили организовать с помощью AJAX'а навигацию сайта или просто несколько страниц, не забывайте, что поисковые роботы исполнять JavaScript пока не научились, поэтому индексация будет затруднена. В качестве решения можно попробовать сделать доступным контент другим способом, например, сделать «Карту сайта» с полным списком страниц.
  • Кнопка «Назад». По статистике, кнопка браузера «Назад» является вторым по популярности средством навигации после перехода по ссылке. Страницы, созданные с использованием AJAX (читай JavaScript), такую возможность не поддерживают, потому что их содержание генерируется, а адрес остается один и тот же. Можно попробовать это исправить, сделав ссылку «Назад» средствами JavaScript, но это часто не оправдано сложно.
  • Избранное Как уже упоминалось выше, у нескольких страниц AJAX может быть один адрес, поэтому пользователь может добавить в избранное не то, что ожидает. Решение заключается в том, чтобы снабдить каждую страницу своим адресом.
  • Неопределенное время ответа. Время ответа сервера на запрос варьируется в зависимости от занятости последнего, то есть - не определено. А во время загрузки данных с помощью AJAX браузер никак не отображает, что что-то происходит. Чтобы не оставлять пользователя в неведении, можно выводить надпись «Идет загрузка» или анимированное изображение.
  • JavaScript код, приходящий в ответе, не выполняется. Хотя это, в общем-то, логично, если вспомнить, что объект XMLHttpRequest задумывался для работы с xml. Решение пока только одно - метод eval.

Возможно со временем все эти недостатки уйдут в прошлое.

Быть добру!

posted on november 22, 2007, updated on september 10, 2025

Комментарии

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

SiR 05.12.2007 10:38 #

Хорошо узнать о недостатках ajax-подхода заблаговременно. А то из некоторый статей выдается, что это панацея от всего :) Однако, невзирая на видимые недостатки, ajax имеет много преимуществ. Важно использовать его там, где это целесообразно.

virua 29.03.2008 14:52 #

2 недели искал сайт подобного рода.
СПАСИБО ОГРОМНОЕ. AJAX теперь превратился в подобие компонента асинхронной передачи данных в Builder C++ или Delphi

Mihan 20.11.2008 20:33 #

AJAX можно и нужно. А все его недостатки со временем отойдут. Тем более что его приемущества перекрывают недостатки.

wzonnet 15.02.2009 22:12 #

Все эти недостатки перекрываются отличной библиотекой history Keeper или что-то наподобие, а для небольших сайтов можно делать надстройку над обычными гиперссылками обработиком onclick - в результате для робота будет заметны все переходы из href="..." на страницы, а переход будет осуществляться ajax'ом.

lunohod 11.08.2009 15:38 #

Преветствую вас господа, спасибо что появился такой сайт, у меня проблемка под номером 5 "JavaScript код, приходящий в ответе, не выполняется.", есть вроде как решение, использовать eval()!
Вопрос у кого была такая ситуация, может поможете?
Перепробовал уже наверное всё!
Нужно чтобы при обработке запроса в php скрипте, последний выдал бы рабчий js!

пример php файла на который ссылается ajax:
<?
echo '<script>alert("Это ЖабоСкрипт")</script>';
?>

Я конечно понимаю что в результате передается xml, но всеже что можно сделать. jQuery не интересует, хочу сделать свой модуль, так как для сайта с весом страниц 1-5кбайт, библиотка jQuery весом в 56кбайт, это перебор!

Спасибо!

Алексей 19.08.2009 19:27 #

to Алексей: честно говоря не знаю зачем такое может понадобиться, ну так eval то вас чем не устраивает?

Alek Veritov 19.08.2009 21:35 #

to: Alek Veritov Вот вы уже не первый кто это говорит, но я не знаю куда ету функцию вставить, как eval`ом обработать вернувшися зарос, у вас есть простой пример??? Допустим страница index.htm с js скриптом и элементами <div id="script"></div>, в который будет загружаться результат запроса ajax из файла go.php с привиденым мной уже содержимым :

<?
echo '<script>alert("Это ЖабоСкрипт")</script>';
?>

Ну честно уже 3 дня сижу, не могу додумать!!!

Алексей 20.08.2009 21:02 #

to Алексей:
<?
echo 'alert("Это ЖабоСкрипт");';
?>

так не пробовали? функция eval принимает строку javascript кода, html тег <script> она естественно не понимает. соответственно, если в ответе сервера есть другой html, то для eval'а нужно извлечь только содержимое <script>.

Alek Veritov 21.08.2009 02:26 #

Облазил кучу статей по АЯКСУ - прочитал здесь, сделал, все сразу заработало. Автору огромное спасибо.

Антон 18.11.2011 01:53 #

Аякс в основном нужен для:
поиск на сайте
веб-формы
голосовалки

Так что это не недостатки :) Вы просто не туда его суете :)

Andrey 23.01.2012 16:18 #

Если бы не эти недостатки, то его можно было бы засунуть ещё много куда (многие и сейчас суют). Хотя согласен, что, возможно, термин "недостатки" здесь не совсем уместен. Скорее это особенности.

Alek 23.01.2012 16:26 #
Отправка новых комментариев временно отключена. Извините, работаем над этим.


tags cloud