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 но това пък не решава проблема с обработката на низове на кирилица. Ако някой е използвал пакета или има решение нека ми пише:
[email protected]
Това е за сега, ajax-а е нов и за мен и ще се радвам ако споделите и Вашите знания :)