Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: библиотека xAJAX

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Открыть новую тему     Написать ответ в эту тему

6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Страница разработчика: http://xajax-project.org/
 
Последняя версия: xAJAX 0.6beta1
 
Докуменатция: Смотреть.
 
Решения:

 


 
Следует помнить!:
(мини-faq от 6epcepk'a)
  • Почему-то не обновляется/добавляется информация.
    Не забываем как должна выглядить функция:

    Код:
         
    function test() {
        $objResponse = new xajaxResponse();
        $objResponse->setCharEncoding('windows-1251');
        ...
        return $objResponse;
    }

     
  • Почему-то не обновляется/добавляется информация #2.
    Если присутствует символы кириллицы, то опять же вспоминаем как должна выглядить функция:

    Цитата:
         
    function test() {
        $objResponse = new xajaxResponse();
        $objResponse->setCharEncoding('windows-1251');
        ...
        return $objResponse;
    }

     
  • В базу данных добавляются кракозябры вместо кириллицы.
    А тут функция должна иметь другой вид:

    Цитата:
         
    function test() {
        $objResponse = new xajaxResponse();
        ...
        return $objResponse;
    }

     
  • Почемуто xajax.getFormValues('formID') не получает поля формы.
    Особенностью xajax является то что форма должна быть первого уровня или говоря другими словами не должна находиться в другой форме.
 





Лучше уточнить название, чтобы понятнее было о чем идет речь /Cheery/

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 23:12 18-04-2006 | Исправлено: Alukardd, 00:51 19-03-2011
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот решил немного поработать над собой (есть немного свободного времени) и изучить xAJAX. У меня получилось все с базовыми операциями но вот где я застрял.
 
Весь HTML текст странички я генерирую из PHP. Если я вставлю код в темплеит странички <?php $xajax->printJavascript(); ?> как это требуется по стандартам xAJAX, то конечно ни фига не сработает по той причине что содержимое странички выводится простым echo. A менять весь движок думаю из за этого тоже не рационально.
 
Что посоветуете сделать

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 04:40 12-05-2007 | Исправлено: Delphi6, 05:39 12-05-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
вставить метку, там где нужно вывести.. и потом при echo str_replace('<--metka-->',$xajax->printJavascript(),$str);

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:34 12-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо проверю, я не знал что $xajax->printJavascript() возвращает значения, я думал что она выводит результата прямо пользователю (через echo например)

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 05:37 12-05-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
я не знал что $xajax->printJavascript() возвращает значения, я думал что она выводит результата прямо пользователю (через echo например)

я им не пользуюсь.. возможно и выводит.. тогда ловить то, что выводит
 
ps: я сам пишу

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:41 12-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо, посмотрел в исходнике и все стало ясно

Код:
function printJavascript($sJsURI="", $sJsFile=NULL) {
  print $this->getJavascript($sJsURI, $sJsFile);
}

п.с. возможно в будущем тоже буду сам писать, а пока это опция поможет избежать не нужных мне проблем

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 05:47 12-05-2007 | Исправлено: Delphi6, 05:47 12-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу не судить строго, но мне бы хотелось выслушать советы профессионалов, как говорится не хочется наступать на грабли. Мне не совсем понятно как можно с использованием XAJAX сгенерировать страничку динамически сразу же с самого начала. Ну представим такую ситуацию, у меня есть общий шаблон, слева есть <div id="menu">, справа <div id="selectoption"> и под низом справа уже сама страничка <div id="body">. Как я понимаю все эти дивы потом я буду динамически по отдельности менять, в зависимости какие операции пользователь произведет. Меня вот что интересует, а как сгенерировать страничку с самого начала? Ну типа пользователь же пока не выбрал ничего в меню, в опшенах и т.д. Да и как выберет если я ему сначала не отображу меню (которое тоже допустим динамически меняется), на данный момент я сообразил подцепить на onload боди xajax_init функцию которая будет запускаться только один раз и при первой загрузке странички, что вы думаете я правильно все делаю?
 
п.с. И как можно сделать что бы до того как загружается часть данных с сервера в центре показывался маленькое окошечко (из div-а например) с gif файлом и типа "крутящими часами", что часто видел на других сайтах.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 15:43 12-05-2007 | Исправлено: Delphi6, 15:44 12-05-2007
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Гм...Это очень неудачный в плане быстродействия и логики выбор.

Код:
 
if(!isset($_REQUEST['i_need_to_fetch_ajax_page_i_m_xajax'])){
//ВЫВОДИМ напрямую содержимое этих слоев
echo "<div id='menu'>...";
}
else{
//выполняем xajax_response
}
 

 
Не стоит при первой загрузке страницы брать контент с сервера. Зачем, если можно сразу вывести первоначальное, дефолтное содержимое?
 
Насчет загрузки с часиками...Я не пользуюсь xAjax, пользуюсь Prototype, но принцип тот же.
xAjax, если не изменяет память, генерирует на стороне сервера функцию, промежуточную между действием пользователя и запросом, так?
В эту функцию можно запихнуть popup с этим самым лоадером. По окончании запроса,
а) (если xAjax поддерживает события как Prototype) на событие onComplete вешать функцию которая будет скрывать слой
б) В самом response скрипта добавлять с помощью средств этой библиотеки уничтожение/скрывание слоя с прелоадером.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 17:17 12-05-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delphi6
 

Код:
function showLoadingMessage() {
    
    if (navigator.appName == "Microsoft Internet Explorer") {
        // document.body.scrollTop;
        document.getElementById("ajax-loading").style.top = document.body.scrollTop;
    } else{
        document.getElementById("ajax-loading").style.top = window.pageYOffset;
    }
    document.getElementById("ajax-loading").style.display = "block";
    
}
 
function hideLoadingMessage() {
    
     document.getElementById("ajax-loading").style.display = "none";
      
}  
 
xajax.loadingFunction = showLoadingMessage;
xajax.doneLoadingFunction = hideLoadingMessage;

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 23:14 12-05-2007
sTa1kEr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Мне не совсем понятно как можно с использованием XAJAX сгенерировать страничку динамически сразу же с самого начала.

Это не имеет смысла...
Цитата:
Ну представим такую ситуацию, у меня есть общий шаблон, слева есть <div id="menu">, справа <div id="selectoption"> и под низом справа уже сама страничка <div id="body">. Как я понимаю все эти дивы потом я буду динамически по отдельности менять, в зависимости какие операции пользователь произведет. Меня вот что интересует, а как сгенерировать страничку с самого начала?

Очень просто. Есть некий метод/класс/функция которая генерирует страничку, через нее и выводишь содержимое первый раз и через веб сервер.
Цитата:
на данный момент я сообразил подцепить на onload боди xajax_init функцию которая будет запускаться только один раз и при первой загрузке странички, что вы думаете я правильно все делаю?  

Плохая идея. Да и зачем это надо? Когда проще в самом скрипте вызвать ту же функцию.
Цитата:
И как можно сделать что бы до того как загружается часть данных с сервера в центре показывался маленькое окошечко (из div-а например) с gif файлом и типа "крутящими часами", что часто видел на других сайтах.

Достаточно просто, но лучше просто посмотреть код, чем объяснять как это делается. Если хочешь пришлю наглядный пример.

Всего записей: 279 | Зарегистр. 28-07-2005 | Отправлено: 03:22 13-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Brodyaga

Цитата:
Гм...Это очень неудачный в плане быстродействия и логики выбор.  

Спасибо обязательно пересмотрю альтернативный подход.
 
6epcepk
Спасибо, как раз то что нужно было И главное как просто все реализовано, мне с каждым днем все больше и больше нравится этот xAJAX.
 
sTa1kEr

Цитата:
Плохая идея. Да и зачем это надо? Когда проще в самом скрипте вызвать ту же функцию.

Согласен, наверно вчера мозги вообще не работали И вправду, почему при первом же запуске не сгенерировать мне все?
 

Цитата:
Достаточно просто, но лучше просто посмотреть код, чем объяснять как это делается. Если хочешь пришлю наглядный пример.

Спасибо, мне уже 6epcepk посоветовал как это сделать, если ничего не получится буду разбирать ваш пример .
 
2 ALL
Как ни странно но я снова застрял На этот раз не могу мой DIV отобразить над страничкой, хотя я указывал z-index но тоже не помогло, где то что то упустил, подскажите пожалуйста

Код:
<div id="ajaxloading" style="display:none; width:100%; height:100%; padding: 50% 50% 50% 50%; position:absolute; z-index:64000;">
<div style="border: 1px solid #000000; width: 85px; height: 25px; background-color:#FFFFFF;">
  <div align="center" style="padding-top: 6px; font: 10px bold Verdana;"><img src="img/loading-bar.gif" width="75px" height="5px"><br>LOADING...</div>
</div>
</div>

и как этот блок мне по центру разместить (желательно без вмешательств JS)?

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 03:34 13-05-2007 | Исправлено: Delphi6, 08:23 13-05-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Мне не совсем понятно как можно с использованием XAJAX сгенерировать страничку динамически сразу же с самого начала.  

 

Цитата:
Это не имеет смысла...

 
На моих старых проектах так генерировались, например, опрос, личный кабинет, календарь и т.п. - что не обязательно к индексированию роботов, а используется только пользователями. МОжно подгружать арзными способами, например через body onLoad.
 
Сейчас, как верно заметили, "есть некий метод/класс/функция которая генерирует страничку, через нее и выводишь содержимое первый раз и через веб сервер."
 
Delphi6
Вот как реализовано у меня. Зачем делать по центру? ПРоисходит же динамическое обновление определнной области экрана и пользователю НЕ стоит закрывать этим блоком пол экрана, а надо вывести аккуратно в уголке.

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 08:53 13-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
Спасибо наверно так и сделаю, просто окошко загрузки очень маленькое, и я думал что будет красиво поместить его по центру. Что касается первой загрузки, то я пока что решил генерировать первую страничку напрямую из моего PHP скрипта. Здесь неудобство в том что я не могу воспользоваться $objResponse = new xajaxResponse(); при первом запуске и приходится str_replace-ом подменивать значение блоков (в случае onLoad формы этого можно было избежать).

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 09:00 13-05-2007 | Исправлено: Delphi6, 15:25 13-05-2007
djinnet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня возник ещё один вопрос. На этот раз это по поводу лоадера... ведь функция, которую дал 6epcepk реагирует на всякую загрузку... то есть на все загрузки, которые происходят.  
Дело в том, что у меня 2 колонки: "А" и "Б". Мне надо при действии в колонке "А" появлялся лоадер именно в колонке "А", а при действии в колонке "Б" - в колонке "Б". Как этого добиться? Обязательно придется писать через ифы? Или есть иной вариант?

Всего записей: 18 | Зарегистр. 19-04-2007 | Отправлено: 01:33 16-05-2007
sp1rit

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую. Прошу у вас помощи. Я хочу подключить к табам ajax. Табы работают когда изначально в DIV тегах таба есть информация, но как только я подгружаю туда новую - не работает.
Думаю на примере проще будет понять.
 
 
вот пример того, что у меня
_www.webh.ru/download/xajax/tests/index.php  
 
 
сами табы находятся тут
_www.webh.ru/download/ajax/tab.rar  
 
Спасибо
 

Код:
<?php
require_once("../xajax_core/xajax.inc.php");
 
function includeScript()
{
    $objResponse = new xajaxResponse();
$text='    <div class="dhtmlgoodies_aTab">1a</div>
    <div class="dhtmlgoodies_aTab">2a</div>
    <div class="dhtmlgoodies_aTab">3a</div>
    <div class="dhtmlgoodies_aTab">4a</div>';
    $objResponse->assign("dhtmlgoodies_tabView1","innerHTML",$text);
    return $objResponse;
}
 
$xajax = new xajax();
//$xajax->setFlag(debug, true);
$xajax->registerFunction("includeScript");
 
$xajax->processRequest();
?>
 
<?php $xajax->printJavascript("../") ?>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript" src="js/tab-view.js"></script>
<link rel="stylesheet" href="css/tab-view.css" type="text/css" media="screen">
<div id="dhtmlgoodies_tabView1">
    <div class="dhtmlgoodies_aTab">1</div>
    <div class="dhtmlgoodies_aTab">2</div>
    <div class="dhtmlgoodies_aTab">3</div>
    <div class="dhtmlgoodies_aTab">4</div>
</div>
<script type="text/javascript">
initTabs('dhtmlgoodies_tabView1',Array('Menu scripts','Calendar','Menus','About us'),0,500,400,Array(true,true,true,true));
</script>
<button onclick="xajax_includeScript(0)" >Click Me</button>
 
 

Всего записей: 18 | Зарегистр. 10-01-2006 | Отправлено: 11:43 16-05-2007
DenyL

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
Не подскажите примеры табов, загрузки контента из обычных страниц и типа index.php?forum=31&active=2... на ксаяксе. Из того что есть у этого скрипта реализована поддержка кодировок - что радует.
Сам я не программер, а дизайнер, и хочу посмотреть как это реализовано на ксаяксе, чтобы можно было использовать эту технологию.
Делаю себе сайт о электронной музыки. Попробовал сделать табы на ДжКвэри, но страница розпухла и весит около 100 кб без графики и цсс
Вот в данном случаи ксаякс будет очень кстати - объем страницы уменьшится в 2-3 раза ибо табы с контентом будут подгружатся отдельно.
 
Буду очень благодарен за помощь!!!
Щас потехоньку юзаю версию xajax 0.2.4, но без помощи не реализовать задуманого

Всего записей: 10 | Зарегистр. 23-03-2007 | Отправлено: 22:37 21-05-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
На вскидочку:

Код:
function tab($id) {
        
    $objResponse = new xajaxResponse();
 
    $objResponse->assign($id . "-content", "innerHTML", $var[$id]);
    $objResponse->assign($id . "-menu", "className", "active");
 
    for (;;) ... set className non-active ...
 
    return $objResponse;
    
}

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 23:31 21-05-2007
DenyL

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тоесть такое уже заложено в ксаяксе?
а можно ли на более предметном примере показать?
Например есть файл, как его приклееть к ксаяксу и что вставлять из пакета ксаякса в хтмл страницу (в данном случаи - простой пример, сам же использую КМСку).
 
Спасибо!

Всего записей: 10 | Зарегистр. 23-03-2007 | Отправлено: 23:40 21-05-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Держите полностью работающий пример. Он на XAJAX 0.5.
Конечно, лучше написать алгоритм перещелкивания на javascript'e, но так тоже сойдет:
 

Код:
define('ROOT', ereg_replace('(^.*)[/\]$', '\1', $_SERVER['DOCUMENT_ROOT']));
 
 
// ==================================================
//                AJAX: INITIALIZATION
// ==================================================
require_once ROOT .  "/lib/xajax/xajax_core/xajax.inc.php";
$xajax = new xajax();
 
 
// ==================================================
//                      AJAX: MAIN
// ==================================================
function tabs($id) {
 
    $objResponse = new xajaxResponse();
    
    for ($i = 1; $i < 4; $i++) {
    
        $objResponse->assign("menu-" . $i, "className", "non-active-menu");
    
    }
    
    $data = array(1 => "Content 1", 2 => "Content 2", 3 => "Content 3");
 
    $objResponse->assign("content", "innerHTML", $data[$id]);
    $objResponse->assign("menu-" . $id, "className", "active-menu");
    
    return $objResponse;
    
}
 
 
// ==================================================
//                   AJAX: PROCESS
// ==================================================
$xajax->registerFunction('tabs');
$xajax->processRequest();
 
 
$xajax->printJavascript("lib/xajax/");
 
?>
 
<style>
.active-menu {background-color: #00FFFF; float: left; width: 100px; cursor: pointer;}
.non-active-menu {background-color: #FFFF00; float: left; width: 100px; cursor: pointer;}
#content {clear: left;}
</style>
 
<div id="menu-1" onClick="xajax_tabs(1); return false;">Menu 1</div>
<div id="menu-2" onClick="xajax_tabs(2); return false;">Menu 2</div>
<div id="menu-3" onClick="xajax_tabs(3); return false;">Menu 2</div>
 
<div id="content"></div>
 
<script>xajax_tabs(1);</script>

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 07:45 22-05-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
 
Помогите разобраться, как можно залить файл через xAjax (<input type="file" name="file">). Дело в том что при дебагинге я заметил что передается только имя файла, а не массив с данными как при простом аплоаде.
 
Спасибо

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:20 22-06-2007
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delphi6
Upload файлов через AJAX-насколько мне известно это гиблое занятие. Точнее, совсем невыполнимое.
Используй iframe, аплоад реализуется в большинстве приложений именно так.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 23:03 22-06-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: библиотека xAJAX


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru