Valery's Mlog

Mindlog of a Freak
April 16th, 2006 by Valery Dachev

PHP: AJAX

Ще започна от това що е и що не е AJAX…

  • е “Asynchronous JavaScript and XML”;
  • е технология;
  • не е конкретен софтуер;
  • не е панацеа;

Имплементациите на AJAX придобиха много широка популярност в последно време… Най-очеизваден и често даван пример за използване на AJAX са много от услугите на Google: предложенията изскачащи при попълването на полето за търсене в Google Suggest, целият Gmail… Основната цел на AJAX е да създаде по-динамично web приложение без да се налага презареждане на цялата страница. На мен например ми се наложи със списъка с блогове, където цялата първа страница, заедно с въведенията към публикациите достигаше до 600 kB. Това, което спестих е въведението, което въобще излезе от кода и вече се зарежда, само когато е нужно. Спестих трафик на потребителите и със спестеното посетителите, които са на трафик, могат да ме почерпят. :) Иначе има някои страшно мазни демонстрацийки: AJAX Шах, PHP+AJAX Chat Server, Upload Progress Meter, Странички с AJAX… Е, за пълната мазнотия се препоръчва CSS2 поддръжка.

Всяка имплементация на AJAX има своята клиентска и сървърна част. От потребителска страна е нужена основно JavaScript поддържка в браузъра (каквато има в повечето инсталирани такива). И това всъщност е основното изискване. Останалото е технологията от сървърна страна, която може да бъде всякаква: от чист HTML, през CGIки на Perl, Python… до PHP, ASP.NET и т.н.. Попаднах на два примера за съвсем простичка реализация на AJAX без всякакви допълнителни щуротии: тук и там. Разбира се, описаните подходи са малко несериозни, макар че на много места биха свършили страхотна работа. След огъня, колелото и картофите, цивилизацията достигна до XML. И тъй като напоследък всичко е XML, логично бе заявките от браузъра да се подават до сървърното приложение (каквото и да е то) през XML, давайки възможност от страната да стои каквото и да е обработващо XML. За целта в JavaScript се появи обектът XMLHttpRequest.

Аз обаче съм PHP, а не JavaScript, гуру (бах мааму и скромност!.. пошегувах се), а и всеки допир до последното ме кара да си мия ръцете с оцет. За щастие има и такива, които произнасят заклинанията си и на двата езика, като в резултат са се появили поне няколко свитъка (библиотеки, frameworks, все тая), чудесно систематизирани ето тук. В началото не повярвах, но после опитах… с AJAX Agent. За съжаление обаче, начинът, по който е написан ме изправи пред предопределени имена на променливите и почти никаква гъвкавост… а и нуждата все пак да поназнайвам JavaScript. Хубавото е, че позволява лесното реализиране на синхронни заявки. Те хората са си показали що може и що не в своите Cool Demos. Аз все пак се спрях на нещо друго: xajax. JavaScript-ът се кешира, работата е повече от елементарна, възможности за debugging, доста много примери и най-вече възможност за отделяне на презентацията от останалата логика, комуникация с повечето типове данни в PHP… Въобще… муцка ! :-P

AJAX е чудесно решение в кутийки за навигация например, за реализиране на потребителска кошница в е-магазин, за извършване на операции, за които не е необходимо потребителят да чака презареждането на цяла страница… AJAX обаче има един основен недостатък: същото съдържание не може да се възпроизведе само с помощта на URL (вярно е, че bgmaps.com демонстрират, как същият ефект може да се постигне и без AJAX, но това е друга тема…). От тук е и следствието, че AJAX трябва да се избягва за визуализация на основното съдържание на съответната страница…

… Опааа, 02:38 е ! Много се разприказвах…

P.S.: Casting spells in ASP.NET.

Leave a Reply

%d bloggers like this: