Взять библиотеку можно тут. Библиотека очень простая в использовании, весь код на 90% состоит из кода php и для работы нужно всего-лишь прописать 10 строчек кода и мы получим готовую страничку.
<?php
ini_set('display_errors', 'On');
/* Включаем библиотеку xajax */
require ('xajax.inc.php');
function processForm($aFormData) {
/* Эта функция обрабатывает форму. Обычно через формы отправляется гораздо больше данных, но для демонстрационного примера мы сократили их количество */ if(($aFormData['firstname'])&&($aFormData['lastname'])&&($aFormData['email'])) { $sOut = "<h2>Спасибо за заполнение вами формы!</h2>"; $sOut .= "<p>Вы ввели следующие данные: </p>"; $sOut .= "<ul>"; $sOut .= "<li>Имя: <strong>".$aFormData['firstname']."</strong></li>"; $sOut .= "<li>Фамилия: <strong>".$aFormData['lastname']."</strong></li>"; $sOut .= "<li>Email: <strong>".$aFormData['email']."</strong></li>"; $sOut .= "</ul>"; $sOut .= "<p>Ваша форма была отправлена посредством Ajax.</p>"; } else { $sOut .= "<form id=\"myform\" action=\"test2.php\" method=\"post\" onsubmit=\"xajax_processForm(xajax.getFormValues('myform')); return false;\"> <table border=\"0\"> <tr> <td>First name:</td><td><input autocomplete=\"off\" type=\"text\" class=\"textbox\" name=\"firstname\" id=\"firstname\" value=\"".$aFormData['firstname']."\" />"; if(!$aFormData['firstname'])$sOut .= "<font color=red>*</font>"; $sOut .="</td> </tr> <tr> <td>Last name:</td><td><input autocomplete=\"off\" type=\"text\" class=\"textbox\" name=\"lastname\" id=\"lastname\" value=\"".$aFormData['lastname']."\" />"; if(!$aFormData['lastname'])$sOut .= "<font color=red>*</font>"; $sOut .="</td> </tr> <tr> <td>Email:</td><td><input autocomplete=\"off\" type=\"text\" class=\"textbox\" name=\"email\" id=\"email\" value=\"".$aFormData['email']."\" />"; if(!$aFormData['email'])$sOut .= "<font color=red>*</font>"; $sOut .="</td> </tr> <tr> <td> </td><td><input type=\"submit\" class=\"button\" value=\"Отправить\"/></td> </tr> <tr> <td> </td><td><a href=# onmouseover=\"xajax_processForm(xajax.getFormValues('myform')); return false;\">test</a></td> </tr> </table> </form><br><font color=red>*Не все поля заполнены</font>"; }
/* создаем экземпляр класса xajaxResponse */
$objResponse = new xajaxResponse(); /* Устанавливваем объект xajaxResponse для обновления элемента HTML, с ID = 'theform' */ $objResponse->addAssign("theform", "innerHTML", $sOut); /* возвращаем результат функции */ // for(;;) ; return $objResponse->getXML(); }
/* создаем экземпляр класса xajax */
$objAjax = new xajax();
# ответ в кодировке вынь-1251 $objAjax->setCharEncoding("windows-1251"); /* регистрируем функцию processForm для объекта xajax */
$objAjax->registerFunction('processForm');
/* обрабатываем запрос */
$objAjax->processRequests();
?> <html> <head> printJavascript(''); ?> <script type="text/javascript"> <!-- xajax.loadingFunction = function(){xajax.$('loadingMessage').style.display='block';}; function hideLoadingMessage() { xajax.$('loadingMessage').style.display = 'none'; } xajax.doneLoadingFunction = hideLoadingMessage; // --></script>
<script type="text/javascript"> function signup(){ <!-- //$objAjax.$('submitButton').disabled=true; //$objAjax.$('submitButton').value='Processing...'; xajax_processForm(xajax.getFormValues('myform')); return false; } // --></script> </script> </head><body> <h1>Пример 3: обработка данных формы без перезагрузки страницы</h1> <p>Для того чтобы отправка формы произошла без перезагрузки страницы нужно чтобы был включен javascript.</p> <p>Этот пример будет работать даже если отключен javascript. Вы можете проверить это отключив javascript.</p> <div id="theform">
<!-- Мы прерываем отправку формы если включен javascript, и вызываем функцию 'processForm()'. Посредством функции 'xajax.getFormValues()' мы можем отправить массив данных формы на сервер. Эта функция идет в стандартной поставке xajax.
Замечание: свойство action установлено на скрипт (processform.php) однако он не выполняется если включен javascript. --> <form id="myform" action="test3.php" method="post" onsubmit="xajax_processForm(xajax.getFormValues('myform'));return false;"> <table border="0"> <tr> <td>First name:</td><td><input autocomplete="off" type="text" class="textbox" name="firstname" id="firstname" /></td> </tr> <tr> <td>Last name:</td><td><input autocomplete="off" type="text" class="textbox" name="lastname" id="lastname" /></td> </tr> <tr> <td>Email:</td><td><input autocomplete="off" type="text" class="textbox" name="email" id="email" /></td> </tr> <tr> <td> </td><td><input type="submit" class="button" value="Отправить"/ id="submitButton"/></td> </tr> </table> </form> </div> <div id="loadingMessage" style="font-size: 22px; display: none;"> Подождите идет обработка... <img src="ajax-1144705889_i_5815_full.gif" /> </div> </body></html>
Вот простой пример заполнения формы. Как видно здесь идет html код и одна функция обработки на php.
Для xajax нужно подключить библиотеку к страничке
require ('xajax.inc.php');
создать объект xajax
$objAjax = new xajax();
установить кодировку $objAjax->setCharEncoding("windows-1251"); Зарегистрировать одну или несколько функций
$objAjax->registerFunction('processForm');
и собственно запустить обработку
$objAjax->processRequests();
В самой функции достаточно весь код обработанный записать в строку и после эту строку вставить в выбранный объект, а код внутри функции:
создание объекта $objResponse = new xajaxResponse();
выполнить замену кода внутри объекта theform строкой $sOut $objResponse->addAssign("theform", "innerHTML", $sOut);
и вернуть результат return $objResponse->getXML();
И все функция средствами ajax вернет измененный код внутрь указанного объекта.
Хочу заметить что библиотека очень мощная и постоянно обновляется, кроме изменения кода внутри объекта можно работать динамически со стилями объектов, можно динамически изменить подключаемый файл css, что приведет к изменению оформления всего сайта на глазах без перегрузки, а самое главное - это возможность выполнения функций JavaScript. На сайте есть примеры и полно в Internet, я уже год работаю с этой библиотекой, возможно позже приведу примеры и описания работы с этой библиотекой. А в следущей статье опишу библиотеку highslide для вывода картинок и любого html кода средствами ajax.
|