Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: библиотека xAJAX

Автор: 6epcepk
Дата сообщения: 13.05.2007 07:53

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



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


На моих старых проектах так генерировались, например, опрос, личный кабинет, календарь и т.п. - что не обязательно к индексированию роботов, а используется только пользователями. МОжно подгружать арзными способами, например через body onLoad.

Сейчас, как верно заметили, "есть некий метод/класс/функция которая генерирует страничку, через нее и выводишь содержимое первый раз и через веб сервер."

Delphi6
[more=Вот]
Код: .loading {
    float: right;
    margin-top: 7px;
    right: 5px;
    position: absolute;
    color: #666666;
    padding: 10px;
    width: 170px;
    display: none;
    background-color: #FCF7D1; border: 1px solid #EACB6B; text-align: center; z-index: 100;
    background-image: url(../images/main/wait.gif);
    background-position: 15px top;
    background-repeat: no-repeat;

}
Автор: Delphi6
Дата сообщения: 13.05.2007 08:00
6epcepk
Спасибо наверно так и сделаю, просто окошко загрузки очень маленькое, и я думал что будет красиво поместить его по центру. Что касается первой загрузки, то я пока что решил генерировать первую страничку напрямую из моего PHP скрипта. Здесь неудобство в том что я не могу воспользоваться $objResponse = new xajaxResponse(); при первом запуске и приходится str_replace-ом подменивать значение блоков (в случае onLoad формы этого можно было избежать).
Автор: djinnet
Дата сообщения: 16.05.2007 00:33
У меня возник ещё один вопрос. На этот раз это по поводу лоадера... ведь функция, которую дал 6epcepk реагирует на всякую загрузку... то есть на все загрузки, которые происходят.
Дело в том, что у меня 2 колонки: "А" и "Б". Мне надо при действии в колонке "А" появлялся лоадер именно в колонке "А", а при действии в колонке "Б" - в колонке "Б". Как этого добиться? Обязательно придется писать через ифы? Или есть иной вариант?
Автор: sp1rit
Дата сообщения: 16.05.2007 10:43
Приветствую. Прошу у вас помощи. Я хочу подключить к табам 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>

Автор: DenyL
Дата сообщения: 21.05.2007 21:37
Привет!
Не подскажите примеры табов, загрузки контента из обычных страниц и типа index.php?forum=31&active=2... на ксаяксе. Из того что есть у этого скрипта реализована поддержка кодировок - что радует.
Сам я не программер, а дизайнер, и хочу посмотреть как это реализовано на ксаяксе, чтобы можно было использовать эту технологию.
Делаю себе сайт о электронной музыки. Попробовал сделать табы на ДжКвэри, но страница розпухла и весит около 100 кб без графики и цсс
Вот в данном случаи ксаякс будет очень кстати - объем страницы уменьшится в 2-3 раза ибо табы с контентом будут подгружатся отдельно.

Буду очень благодарен за помощь!!!
Щас потехоньку юзаю версию xajax 0.2.4, но без помощи не реализовать задуманого
Автор: 6epcepk
Дата сообщения: 21.05.2007 22:31
На вскидочку:

Код: 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;
    
}
Автор: DenyL
Дата сообщения: 21.05.2007 22:40
тоесть такое уже заложено в ксаяксе?
а можно ли на более предметном примере показать?
Например есть файл, как его приклееть к ксаяксу и что вставлять из пакета ксаякса в хтмл страницу (в данном случаи - простой пример, сам же использую КМСку).

Спасибо!
Автор: 6epcepk
Дата сообщения: 22.05.2007 06:45
Держите полностью работающий пример. Он на 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>
Автор: Delphi6
Дата сообщения: 22.06.2007 21:20
Здравствуйте,

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

Спасибо
Автор: Brodyaga
Дата сообщения: 22.06.2007 22:03
Delphi6
Upload файлов через AJAX-насколько мне известно это гиблое занятие. Точнее, совсем невыполнимое.
Используй iframe, аплоад реализуется в большинстве приложений именно так.
Автор: Delphi6
Дата сообщения: 22.06.2007 23:15
Brodyaga
Спасибо за ответ, очень жалко что xAjax не поддерживает такую жизненно важную функцию. Так и буду делать через iframe.

п.с. меня интересует вот что, xAjax не поддерживает пересылку файлов или просто это очень сложно реализовать?
Автор: 6epcepk
Дата сообщения: 22.06.2007 23:19
Delphi6
Посмотри на trydobe.com
Автор: Delphi6
Дата сообщения: 22.06.2007 23:49
6epcepk
Действительно ценный линк, даже исходник дают, спасибо. Сейчас буду обдумывать как ;t все лучше реализовать.

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

Думаю мой вопрос можно считать временно закрытым, всем спасибо

Добавлено:
А есть ли возможность заставить xAjax функцию ждать пока не придет ответ от сервера? Ну типа что бы она приостановила JS код пока не закончит работу? У меня просто есть цикл:

Код: while (totalField.value != finishedField.value) {
xajax_DownloadLinks();
}
Автор: 6epcepk
Дата сообщения: 23.06.2007 09:24
Delphi6
Не надо беспокоиться за его функционал - основной cgi-скрипт загрузки был написан другими людьими очень давно и полностью протестирован временем.
Вообще чесно говоря у него не очень хорошо и качественно все написано, но является основой для личного переделывания. В идеале - плагин сделать.


Цитата:
Ну типа что бы она приостановила JS код пока не закончит работу?

http://wiki.xajaxproject.org/Xajax_0.5:_Tips_and_Tricks:_New_Features#waitFor_response_command
Автор: Delphi6
Дата сообщения: 23.06.2007 13:17
6epcepk

Цитата:
Вообще чесно говоря у него не очень хорошо и качественно все написано, но является основой для личного переделывания. В идеале - плагин сделать.

Вот в этим я с вами на все 100% согласен, надо просмотреть исходник и как там реализована отсылка файла. Как я подозреваю все делается через JS который считывать локальный файл частично и отсылает на сервере CGI скрипту, который в свою очередь все записывает в tmp файл. Этим и объясняется как они добиваются progress бара.

Это и породило идею заюзать этот алгоритм но только в других личных целях. Обрабатывать данные частично, и возвращать серединный результат пользователю, после чего возобновлять обработку. Как вариант придумал вот такой подход. Вызывать функцию JS с помощью ответа xajax (с помощью функции addScriptCall). Если есть что еще что обработать, то вызываем JS функцию которая будет в свою очередь вызывать ее.

Следующий вопрос, разве через xajax нельзя вернуть сгенерированный файл для скачки? Или это надо делать напрямую?
Автор: diezel
Дата сообщения: 23.06.2007 15:40

Цитата:
через JS который считывать локальный файл частично

С каких пор JS может считывать локальные файлы? Такого вроде никогда не было.
Автор: Delphi6
Дата сообщения: 23.06.2007 15:49
diezel

Цитата:
С каких пор JS может считывать локальные файлы? Такого вроде никогда не было.

Это только подозрения (теоретически) и идея как такое осуществляется, я пока занят немного другим вопросом что бы разобрать исходник. Но эту идею заюзал в задаче с отображением прогресса выполненной работы очень красиво получилось.

Так что на счет скачивания файла? Реально через xajax ответ передать текстовой или zip файл на скачку? Для этого надо редактировать header, даст ли мне xajax возможность это сделать?
Автор: 6epcepk
Дата сообщения: 23.06.2007 23:08
Delphi6
Не реально, как и сказал diezel.

Что делает аддон от трудоб? Происходит отправка формы cgi-скрипту, где располагается file-input.

А по поводу отправки через яваскрипт - не ломайте светлую голову (: Разработчики XAJAX'а уже давно все перепробовали (:
Автор: Delphi6
Дата сообщения: 24.06.2007 10:19
6epcepk
Спасибо.

Цитата:
Что делает аддон от трудоб? Происходит отправка формы cgi-скрипту, где располагается file-input.

Какой же он тогда использует алгоритм для создания прогресс бара? Я предположил что он частично получает файл и на каждую порцию генерирует ответ с определенным значением прогресса.

Что касается генерации файла на сервере и передаче его пользователю для скачки - сделал его старым методом через хидер, без аджакс (позже сообразил что аджакс здесь совсем не уместен).
Автор: vitovt
Дата сообщения: 25.06.2007 18:11
а кто-нибудь пробовал сделать на xAjax скрипт AutoComplete?
Автор: 6epcepk
Дата сообщения: 25.06.2007 18:40
В теории делается очень легко, пока надобности в нем не возникало.
Конкретные вопросы?
Автор: vitovt
Дата сообщения: 25.06.2007 18:52
6epcepk

в теории я понимаю это нужно сделать так, посмотреть что вводит юзверь, отправить асинхронно скрипту, тот отдась XML, обработать его и вывести в DIV то что нужно. Я видел некоторые скрипты, не xAjax там все как-то сложно сделано, я это ивжу проще ) вот проблема в том, что не работал никогда с xAjax ))
Автор: 6epcepk
Дата сообщения: 25.06.2007 19:02
Тогда вам нужно разобраться как хаякс обрабатывает самые элементарные команды (assign).

Общий алгоритм:

1. Есть поле ввода, по событию onChange="xajax_set_data(this.value);"
2. Хаякс-функция обрабатывает данные и:
- если данные есть, то assign в блок;
- если данные есть, то assign стиль для блока видимый;
- если данных нет, то assign стиль для блока НЕ видимый.
Автор: Damned_WarGot
Дата сообщения: 17.07.2007 17:21
Вопрос.
Сейчас делаю чат, фрейм ввода текста сделал на xajax, весьма удобно, но после передачи инфы из строки ввода строка ввода не обнуляется.
Пробовал через
    $objResponse = new xajaxResponse();
    $objResponse->AddClear("chat_text","innerHTML");
не получается, сама форма ввода:
<form id="chat_form" onsubmit="xajax_chat_add(xajax.getFormValues('chat_form'));return false;">
<input type="text" id="chat_text" name="chat_text" maxlength="300" size="100">
<input type="submit" value="написать" >
</form>

Подскажите решение плз
Автор: Cheery
Дата сообщения: 17.07.2007 18:29
Damned_WarGot

Цитата:
Подскажите решение плз

берешь и присваиваешь ей пустое значение
Автор: Damned_WarGot
Дата сообщения: 12.08.2007 02:55
Cheery

Цитата:
берешь и присваиваешь ей пустое значение



Спасибо с этим разобрался -)

Но возникло ещё 2 проблемы не преодолимые пока что -(

1. Есть форма, в форму вбиваются данные дальше их отдаю на проверку xajax функции, надо чтобы при трушном результате проверки данные уходили к другому файлу post ом. Как будто юзер просто заполнил форму и никакой промежуточной функции не было.

2. Как в xajax функции вызывать другую функцию ? Т.е. у меня есть основная функция которая выполняет различные проверки и по результатам проверки должна грузить другие функция. Никакие данные от проверочной функции к остальным не передаются, их надо просто вызвать.

Заранее спасибо за помощь.

Автор: Cheery
Дата сообщения: 12.08.2007 03:01
Damned_WarGot

Цитата:
Есть форма, в форму вбиваются данные дальше их отдаю на проверку xajax функции, надо чтобы при трушном результате проверки данные уходили к другому файлу post ом. Как будто юзер просто заполнил форму и никакой промежуточной функции не было.

ну и? берешь форму и submit() ее
Автор: Damned_WarGot
Дата сообщения: 12.08.2007 03:15
Cheery

Цитата:
ну и? берешь форму и submit() ее


Сорри, но можно пояснить как это сделать ? -)
Автор: Cheery
Дата сообщения: 12.08.2007 03:28
Damned_WarGot

Цитата:
Сорри, но можно пояснить как это сделать ? -)

если у формы есть id, то document.getElementById('id').submit()
Автор: Damned_WarGot
Дата сообщения: 12.08.2007 16:35
Cheery

Спасибо

Страницы: 12345678910

Предыдущая тема: AJAX


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.