Compartir a través de


Аякс – вечер разочарования (AJAX)

«?? ????? ????. ??? ??? ? ?????? ? ???, ??????? ???????? ????????? ????. ?????. ??????????? ?????. ??? ?????????? ??????? ?????????????...»

?? ??????? ?? ???????. ??? ????? AJAX? ??? ?????????? ???????? ???????????? ??????? ?? ??????? ??????? (???????? ?? ????????) ????? ? ????????. ???, ????????, ????? ?? ???????? Google Mail. ?????? ??? ???????? ????????????: ??????? Javascript ???? XMLHTTP ??????, ??????????? ??????????, ?? ? ??? ??? ???????? ?? ???????? ???????????? ?????????; ????? ???? ???????????? XML ? ???????????? ??????????? – ????????, ?? ???? ?????? ??? ? ??????? ????? – ? ????? ??????????? ????? ? ???????????????? HTML. ??? ?????????? ? ???????? ? ?? ??????? ?? ??????? ?????????? ????, ????? ??? ? ????????? ?????? ?????????? ?????? ?? ???????? ?? ?????? ????????. ????????????, ??????? ???-???...

??? ???, ????????? ???, ??? ??? ?????????? ???????? ??????? ? ?????? ?? ???? ?????? ?? ???? ?? ???? ??????. ???????? ???? ? ???, ??? ???? ???? ?????? ??? ??? ???? ??????????????, ? ?????? ? ?????? ??? ???? ????? ??????? ????, ??????? ??? ? ??????????, ??????? ??? ???? ??????????? ?????????? ?????????? ?????, ?? (!) ??????? ???????? ?? ???????. ?? PHP, ?? ?????, ?? ??????, ??? ASP ??? ASP.Net ? ?? ? ?? ??????. ??? ? ??????????, ? ?? ??????????? ?? ????? ? ????? ?????? ? Javascript ? ?? ???????, ??? ? 1998-? ????? ???? ?? ??? ??????. ? ??? ??? ? ? ????????? ??????? ?????? ???????, ?? ? ????? ?????? ??? ??????????????? ????? ?????? ?? ? ???? ? XML ? ??????? ?????? ?????? – MSXML ??? ???? ?????? ???????? ?? ???????????, ????? ? ? ??????? MSXML 3, ? ????? ??? ?? ??????? ??? ?????? 4.0, 5.0 ? ?????????? ?????? 6.0, ??????? ??????? ????? ? SQL Server 2005 ? ????? ? Vista. ? ?????, ?????? ?? ?? ???????????? ?????? ?????????? ?????. ????, ??????? ????????? ???????, ? ???????? ?? ????.

??, ??? ?????? ????????? ??????? ??????? ?? ?????????, ?????? ?????? ? ??????????? ?????? ????? ???. ???? ??? ???????? ???????? ???? ?? ?? ?? ?????? ????????, ?? ???????? ????????? ?????? ????, ? ??? – ??????? Javascript, ? ?? AJAX. ? ?????? ????????? ?? ???? ??????? ???????, ?????? ??? ?? ????????. ?? ????, ????? ? ????? ?????? ?-??, ??????? ????, ?????, ??? ?????? ?????????? ?????????? ????????? ??????????? ??????, ? ?? ????? ????? ????? ????????. ??, ???, ???? ??????? ?????????. ??? ?? ?? ???!

??, ???????. ??? ?????????? ? ?????????? «????? ? ?????? ?????» ? ?????????? ????????, «???, ????????, ?? ??????????!» ??????? ? ?????? ? ????? ?????? ???. ??????, ??? XMLHTTP ??????? ?????? ? «??????????????» ?????????, ? ? Internet Explorer ??? ???????? ?????? new ActiveXObject(...). ? ?? ???? ? ?????? ActiveXObject, ? ??? ?? ? ??? ?? ??????? ??????? MSXML DOM, ????? ???? ??? ??? ?? ????? ???? ?? ?????? ?? ???????????? ????????? ? ????? ?????? ??????? ??????, ? ?????????? ?????? ????????? ? ???? XSLT ? ?????? ???????? ????????? ? ????????. ? ?????????, ????? ?????? ??????? ?? ?????? ? IE, ????????? ???????? ? ????? ?????? ??????????? ?????? ?? ?????????? ??. ? ????. ??????? ???? ?? ?????? ? ?????? ???????.

??????, ? ???-???? ??????????????? ????? ??, ??? ?????, ? MSXML DOMDocument ? ?????????? ????????? XML. ???? ?????????? 20 ?????, ? ?? ??? ??? ??? ??????? ??????????? ???? ?? ????? 20 ?????. ?????????? ?????????, ??? ?????? ??? ???? ? ??????????????? ???????????

????????? ?? ??????? ??? XMLHTTP ? ??????????? ?????????. ???????, ??? ??? ????????? downgrade – ???????? ??????????, ?? ? ????????????? ? ???? ?????? ?????????? ???? ?? ?????, ?? ??? ? ????? ?????? «???????» ??????? (? ????? ?????? «?» ? «AJAX» ???????? «Asynchronous»), ??? ? ??? ????????? ? ?????????????? ???????, ??????? ???????? ?? ?? ???????? ? ??????…

???? ?????. ?????? ?????? ??? ??????? ? ?????????? ? 50 ????? ????, ?? ???????? ??? IE ??? ????. ???????? ????????????? ?????? – ????????? ???? ? ?????????????? ?????????. ? ??? ???????? ?????? ????? ?????...

? ????? ????????? ?? FireFox ? ?????, ??? ???????? ?????????? ?????????????? ?????????. ?????? ??????? ??? ???? ???????? XMLHTTP ??????? ???, ????? ??? ???????? ?? ???? ???? ?????????. ??????? ????, ?????? ?????????, ??????? ???? ? ????????... ? ????? ?????????, ??? ?????? ????? ????????. ??????? ?????? ?? ????????. ? ??????? ???????? ??? ???? ?????? ?? ???, ??????????????? ??? ??????? ????????, ? ? ??????? ?????? ???????? ??? ???? ?????? ?? ??, ??? ??? ?????? – ?????? ?????? ?? ??????????. ? ?????, ?????, ?????????.

????????? ??????? ???? ????????, ????? XML ??????????. ?? ??? ???? ?????? ????. ????? ? ? HTML ????????? ?? ????????? ?????. ??? ??? ?????????????? ???????? ????? ??????? ? ??? ?? ?????????, ?????? ?????? ?? ??????. ???? ???????, ??? IE ???? ???????????? ??? ?????? ???????? (???????, XP SP2), ?? ????? ????????? ? ????? ???? ????. ? ????? ?????? HTML ???????? ?? ????????? ????? – ??? ????????? ?????????, ????? ?????. ??, ???. ??? ?????????????? ???????? ????? ???? ? ??????, ??? ??? cross-scripting, ?? ???? ????? ?????? ??????????? ? ?????? ????? ???????? ????????? ?????? ????.

?? ????????? ??? ???????????? ???? – ????????, ???? ? ????????? ????? ????????? ?? http ?????????? ?????? ????? ?????? ??????, ??? ??????? ???? ????????? ??????????. ???????? ????, ??? ??? ???? ?????????, ??? ??? ???????? ? ??????. ?? ??? ???? ???? ?? ?????????, ?? ??? ?? ????????? ???? ??????????? ??? https://badguys.com ?

??, ?????, ? ???? ????????? ????????? ?? ??? ?? ????, ??? ??? ? XML. ?? ??? – ??????? ????????. ????? ??????????? ????????? ????????? ???? ????????? ???? ?? ????, ? ??? ???????? ?????. ? ?????, ? ???????? ??? ??? ???????? ????????? ????????? ? ?????? ???? ??????? ??????? ??????????? ????????? ?????. ?????? ? ??? ??????? ???? ?? ????? ? ??? ?? ??? ?????? ????????? ?????????. ?? ???? ???? ??????????, ??? ?????????????? ???????? ????? ?? ????????, ??? https://mysite.com/page.html ? https://mysite.com/feed.xml ????????? ?? ????? ? ??? ?? ?????. ???????????, ??????? ?????, ? ???? ????????? ????????? ????????????? ???? (relatrive path), ?.?. ??????? https://mysite.com/feed.xml ??? ?????? xmlhttp ??????? ?? feed.xml. ????? ????? ??? ???????? ??????????.

???????, ? ????? ?? ????, ????? ????????? ?????????? XML ? ????????? ??? ? ????????. ? ???????? ??? ??? ???? ?? ??? ? – ???? ?????? – ?????? ????????. ??-??????, ???????? ?????, ? ??-??????, ? ????? ??? ?????????????? ???????? ????? ?????? ?????? ?? ?? ??????. ????...

?????? ????? ? ?????????, ??? ?????????????? ???????? ?? ????? ??????? selectNodes ? selectSingleNode ?? ?????????? XML ???????. ??? ?????? ????? XPath ? ?????????? ???? ?????? ??????, ???? ???? ??????? ? XML ??????? ??????????????? XML ?????????. ? ???????? ???????????? ?????????????? ???????? ?????????? getElementsByTagName. ??????? ??????? ? ???, ??? select*Node(s) ?????????? XPath, ??????? ????????? ??????? ??????, ????????, ???????? ? ?????? title ??????????? ?????? ????????? ? ?????? entry. ? getElementsByTagName ???????? ?????? ??? ???????? ? ????????? title ?????? XML ??????, ???????, ????????, ????????? ????? ?????. ??? ????????, ??? ???? ??????? title ?????????? ????? ? ?????? ??????, ?? ?????? ????? ???????? ???? ?? ???????. ??????? ??????? ???????? ???? ?? ?????? ?????, ???? ?? ??????? ???????...

?? ??? ??? ?? ???. ? XPath ????? ????? ????? ?????? ?? ???????? link, ??????? ????????? ?????? ???????? entry ? ????? ??????? rel ?????? «alternate», ? ????? ?????????? ??? ???????? «href». ? ??? ??? ?????? ??? selectNodes ? XPath? ??, ?????, ???????, ??????????? ???????? ?????? ??? ?????????? ??????????, ?? ??? ??? ???? ?? ???????? ????, ? ???-?? ??????... ??????, ??? ??? ?? ??????????? ??????. XML feed ? ????? ????? ??? ? ??????? Atom («??????????? ?????????????? IBM ? Google» ??? ?????? ????? ?? ???? ??????? ?? ?????????), ? ??????? ?????? ???? ???????? ????????? ??????, ? ?????? ???? – ??????????!

?? ? ? ? ???? ????? ???? ?????????. ?????? ?? ?????? ??????????? ???????? ?????? ???????? title, link ? content ? ??????? getElementsByTagName ?????? ??? ????????? ????????? entry. ?? ????, ??????? ????? ??? ???????? entry, ? ????? ??? ?????? ??????? ????? ??? ??? ?????, ????? ??????? ??????????, ??? ?????????, ?????? ? ?????????? ????? ??????????????? ???? ?????. ? ??? ? ?????????, ??? ?? ????????? ????????? getElementsByTagName ?? ????????... ??? ???????? ? ?????? ??????, «? ?? ???!» ????? ????, ? ??? ???????? ??????? ?????????? ????????? ????????? entry ? ??? ???? ??????????. ?????, ???? ? ???????, ? ????????? ??? ??????????????? ?????????? ?????? ????? ??? ??????????? ???????? ?????? IE – ??? ???? ??????? ? ?? ??????. ?? ??????? – getElementsByTagName ?????? ????????? null. ??? ???-?? ? ? ????????, ????? ??? ??? «???? ?????? ??? ??????».

????? ?????????? ? ??? ???-?? ????????? ???????? ?????????????? ???? ???????? 90 ????? ? ????? ? ????? ????????? ?????. ???????, ??? ???? ?????????????? ???????? ??????????????, IE ???????? ??????? ? ????????? ???? ???? ????? ? ??????? ???????? ??? ????? ? ????? ??????????? ???, ?????????????? ? ???????????? ?? ??????? ????? ? ???????. ????? ? ?????-?????? ? ???????? ?????? ??? ??????? ?? ????????? ?????. ?????-??????. ????? ?????? ????? ??????. ? ???? ??? ? ????, ????? ????, ?????? ???? ?????? ? ??????? ?? ??? ???.

????????, ? ?? ??????, ??? AJAX ?????? ?? ??????????????. ???? ?? ????????????? ? ???????, ? ??????, ? ?????? XML, ???????????? ? ???????, ?? ?????? ????????? ??? ???, ????? ? ?????-?? ?????? ??????????? AJAX ???? ??????????, ? ??????? ??????????? ??????? ? ???????? ??????? ????. ???? ?????? ????? ????? ????????? ???? ?????????, ?? ???? ???????? ??????, ? ?????????? ????? ??? ???? ?????? ???? ?????? ?? ????, ???? ???? ?? ????? ????? ????? ?????? (? ?????? ??? ??????), ?? ?? ????? ??? ?????? ???? ?????????????? ???? ? ?????? ??????. ????? ?????? ?? ?????? ???? ???????? getElementsByTagName, ? ?????????? ????????? ???????? ?????????? ?????, ??? ?????? ???????? ??????????? ?????? ??????, ?????? – ??????, ? ?.?. ? ?????????, ? ???? ?????? ??? ???? ?? ???.

??, ? ?????? ?????????? ????????????:

  • IE+MSXML DOMDocument ?????????, selectNodes:         20 ?????, 20 ?????
  • IE+MSXML XMLHTTP ??????, ??????????, selectNodes: 50 ?????, 50 ?????
  • ????? ?????????? ????????????? XMLHTTP, getElementsByTagName 90 ?????, ????????? ?????

??? ?? ???????? – ?????? ????????. ?????? ??? ?????????, ?????? ???? ???????, ? ?? ???? – ?????? ??????????. ???? ?????? – ????????, ??? ? ?? ????. ? ????????????? ??? ???????, ???? ????? ?????????? ?????????. ???? ? ???? ????? - 20 ????? ???? ?? ?????? ???????? ????????? ?????.

??????, ???????????? ???????? ???????? ? ????? ?? ??????:

- ? ???? ??? ???? ???? ???????? ? ?????, ??? ??? ???????????? OM ?? ??????? ???????, ??????? ? ??????? ??????????...
- ??, ? ??? ????????
- ??, ????? ????????.
- ???, ??? ?????
- ???, ????? ??????????.

Comments

  • Anonymous
    January 01, 2003
    Опять по поводу Аякса (см. пост ниже). Чтоб не быть голословным, вот они, те 20 строк, в которые можно...
  • Anonymous
    May 25, 2006
    Странно.. у меня это прошло более-менее безболезненно
  • Anonymous
    May 26, 2006
    Я конечно не знаю подробностей твоей задачи, но не проще было на одном хосте генерировать готовый JS, делающий вывод на страницу нужного контента (тупым dovcument.write), а на втором (где нет поддержки серверных скриптов) просто втыкать этот динамический javascript c другого сайта в статические HTML страницы? Я бы сам примерно так сделал, т.к. вообще избегаю сложного javascript`а, когда нужна поддержка всех браузеров.

    А достоинство AJAX в том, например, что gmail работает под линукс и мак ос :) Кстати существуют библиотеки, которые берут на себя геморойную работу, связанную с AJAX - генерируют клиентские скрипты, которые вполне работоспособны под акутальными версиями браузеров. Сам где-то пол года назад пробовал поигроаться с двумя такими библиотеками под PHP и всё вполне успешно жило в IE, Опере и Фаерфоксе. Хотя реально я Аякс пока нигде не использовал и не очень хочу это делать без крайней нужды (стараюсь обходиться без утяжеления клиентской стороны обычно). Сейчас это больше модный тренд, чем реально работающая (беспроблемно работающая) технология. Вот через пару лет...
  • Anonymous
    May 29, 2006
  • Нет, фирма раззорилась. = разорилась
  • Anonymous
    June 01, 2006
    Андрей, а что ты делал? Потребление Atom feed несмотря на свою внешнюю примитивность выдавливает из Аякас многие его проблемы. Большинство применений Аякса его (ее?) так не напрягают. Да и даже с Atom feed, будь у меня две стороны под рукой, я бы скорее всего всех этих проблем Аякса просто не заметил бы. В общем, просто задачка по сложности используемого XML и наложенным ограничениям способствует выявлению проблем. Косвенное подтверждение тому - тот факт что примеров скриптов для этой в общем-то очевидной задачи на инете практически нет. По крайней мере мне ни MSN, ни Google ничего не нашли.

  • Anonymous
    June 01, 2006
    Алекс -- да, генерировать скрипты сработало бы легко. Просто хотелось именно Аякс распробовать. Как-никак, изрядно шума вокруг него, модная технология, не хочется чувствовать себя валенком, даже если и относишься подозрительно к идеям выполнять что-то в браузерах, а не на сервере... Кстати, серверная сторона с Линаксом тоже хорошо работает.

  • Anonymous
    June 01, 2006
    Alvas, спасибо за поправку -- сейчас исправлю.

  • Anonymous
    April 21, 2007
    Не вынесла душа Поэта :) $.get("chat.php",{"chat_id":chat_id, dataType: "xml"},function(xml){  $("root",xml).each( function(){   var src_id               =   $("src_id",this).text();   var dest_id              =   $("dest_id",this).text();   var dest_name            =   $("dest_name",this).text();   var message              =   $("message",this).text();   var id                   =   $("id",this).text(); }); Как грится- где хочеш и как хочеш :) А 19Кв за всю радость кросвравсера и сокращения кодо - это ... Всё меяется :) P.S: Библиотека jQuery

  • Anonymous
    November 04, 2007
    Под Оперу и Мозиллу используются следующие классы:

  • XMLParser - для перевода из xml в dom
  • XMLSerializer - для перевода из dom в xml
  • document.evaluate - аналог selectNodes с расширенными возможностями все это можно найти на популярных форумах :)