Помогни ни да направим Uroci.net по - богат! Добави урок

XAJAX

skus   трудност:    видян: 11981

XAJAX всъщност е просто библиотека написана на PHP, която позволява използването на AJAX технологията. Ако не знаете, какво е AJAX погледнете предишните уроци. За разлика от класическите заявки през HTTP с помощта на JavaScript при XAJAX заявките се изпращат и връщат посредством JS, но се обработват изцяло с PHP. Другата разлика е в сложността. Библиотеката включва предварително написани функции, които могат да бъдат използвани в приложенията. Лесното тук, е че за да си направите проста страничка с XAJAX е нужно съвсем малко усилие. Първо изтеглете и си разархивирайте пакета от тук:

http://prdownloads.sourceforge.net/xajax/xajax_0.2.4.zip?download , след това я сложете в папка например ajax/. С това приключва инсталацията. Създаваме си проста HTML страница (по-точно .php тъй като пакета е за PHP). Създаваме обикновена форма за пресмятане:

<form action="?">
Число 1:<br/><input type="text" id="t1"/><br/>
Число 2:<br/><input type="text" id="t2"/><br/>
<input type="button" onclick="xajax_sub(document.getElementById('t1').value,

document.getElementById('t2').value)" value="+"/><br/>
<input type="button" onclick="xajax_min(document.getElementById('t1').value,

document.getElementById('t2').value)" value="-"/><br/>
<input type="button" onclick="xajax_po(document.getElementById('t1').value,

document.getElementById('t2').value)" value="x"/><br/>
<input type="button" onclick="xajax_del(document.getElementById('t1').value,

document.getElementById('t2').value)" value="/"/><br/>
Резултат: <label id="res"></label>
</form>

Повечето от Вас разбират, че създадохме 2 полета и четири бутона. При натискане бутони извикват съответната функция, като трябва да се знае, че всяка функция например sub(), ще се използва както си е sub(), но в при извикването и в HTML, пред нея слагаме задължително xajax_. На тези четири функции задаваме двата атрибута така:

xajax_function(число1, число2). От тук нататък php ще свърши останалата работа. Зада работи скрипта трябва да извикаме библиотеката ето така: include("ajax/func.php"); сега да обясня, всяко нещо, което ще правим се състои от 3 файла: func.php , func.common.php и func.server.php.

Ако желаете може и да си поберете всички функций в един файл. Файла func.php трябва да съдържа (няма значение, в коя папка е):

require("func.common.php"); //Извикваме common файла
$xajax -> printJavascript('ajax/''); //Пътя до библиотеката

Готово, това ще изпише JS, който ще извика всичко необходимо. Сега common файла:

require_once("ajax/xajax.inc.php"); //Главния файл на xajax
$xajax = new xajax("ajax/func.server.php");
$xajax -> registerFunction("sub");
$xajax -> registerFunction("min");
$xajax -> registerFunction("po");
$xajax -> registerFunction("del");
//Регистрираме функцийте, който ще използваме

И накрая server файла.

function sub($a, $b) {
$r = new xajaxResponse(); //Регистрираме $r
$r -> addAssign("res", "innerHTML", Int($a)+Int($b)); //Това взима обект с id=res и сменя атрибута

innerHTML с $a+$b, тоест сбора :)
return $r;
}

require("func.common.php");
$xajax -> processRequests(); //Връщаме резултатите

Готови сме. Функцията е готова, регистрираме $r, извършваме действията, които бяха целта ни - събираме и изкарваме резултата като променяме атрибутите на даден обект по id, именно това прави функцията addAssign(). Разбира се има още много такива като например addScript(), който изписва JS скрипт и т.н. Другите функции можете сами да си ги направите (изваждане, умножение, деление...). Е това е един малък пример, но все пак постигащ динамичност - целта на AJAX. Цялата документация по проекта ще откриете тук: http://www.xajaxproject.org , както и всички нужни функции и линк към проекта.

Намерих и един проблем: пакета е написан за UTF-8, но някои сайтове използват все още windows-1251 и се получава проблем при заявките. Реших проблема като заместих UTF8 със windows-1251 където намерих в xajax.inc.php но това пък не решава проблема с обработката на низове на кирилица. Ако някой е използвал пакета или има решение нека ми пише: skus@mail.bg

Това е за сега, ajax-а е нов и за мен и ще се радвам ако споделите и Вашите знания :)



Коментари (3)

SoundreameR на 10.01 2007 в 22:49ч.
На мен ми е много по-лесно просто да си направя едно .js с функциите на AJAX и разни .php-та в /ajax/ които да връщат съответната информация... Не мисля, че има нужда чак толкова да се усложняват нещата.. и без друго са малко задръстени :)
lyubo на 26.01 2007 в 15:26ч.
Ами да Soundreamr - прав си, но когато се налага да генерираш страниците на база на потребителските действия, състоянието на някаква база данни, и разбира се когато този потребител е user на сайта ти и трябва да му извадиш един куп неща като, съобщения, баланс по сметка любим цвят и прочее се налага, човек да се замисли дали всеки път да си пише js-четата за да направи възможно най-бърза страницата си.
Абе каквото и да става, едно нещо е ясно Отдавна някой трябваше да се замисли как да преодолее проблемите на HTTP протокола. AJAX е едно възможно решение, но като всичко обвързано с HTTP и JavaScript си има своите тъмни страни.
Ако най-добрия ти клиент по някаква безумна причина е решил да ползва links или Konkueror или кой да е друг браузър дето не поддържа XML заявки (или пък още по-лошо JS), какво правим тогава?

На автора на статията адмирации от мое име, за труда у за това че показва нови неща а не до болка познатите техники за това или онова.

Обаче, HTTP (и изобщо web технологиите) в момента suks! Многострадални протоколи и стандарти наследили пороците на своите прародители!
wallflips на 09.08 2012 в 17:05ч.
Брат.. Нищо лично, просто вече техниките с AJAX са толкова напред, че тази библиотека просто няма смисъл от нея. Защо ни е подобна простотия когато просто си имаме JSON, който можем да си разгъваме пхп-то като локум за някакви стотни от секундата.. А да и в примера си (нз дали знаеш) но писането ти е доста deprecated. В смисл, не е добра практика да се използва onclick и тн в HTML особено в HTML5. Това са бинд евенти, които понякога просто може да не се бинднат :Д. Използвай една наистина готина библиотека (няма как да не я знаеш) JQUERY и си биндвай на воля с delegate() или просто bind().

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com