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

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

Автор: SRangeR
Дата сообщения: 08.03.2009 10:59
хочу вставить ява скрипт на страницу. Скрипт делается при загрузке страницы.
    <script type='text/javascript'>
        /* <![CDATA[ */
        window.onload = function() {
            <?php $aRequests['load']->printScript(); ?>;
        }
        /* ]]> */
    </script>
    
function load()
    {
        $objResponse = new xajaxResponse();
        $scr = "function GoBack() { if (confirm('Are you sure you want to go to the previous page?')) { history.back() } }timestr = '00:00:00';tid = 0;pause = 0;var to;var bcount;var tcount;function writer(){document.write('test'); }function time(n) { tid=window.setTimeout('time(1)',to); today = new Date() if(today.getMinutes() < 10){ pad = '0'} else pad = ''; if(today.getSeconds() < 10){ pads = '0'} else pads = '';timestr=today.getHours()+':'+pad+today.getMinutes()+':'+pads+today.getSeconds(); f.result.value = timestr; window.status = timestr; window.clearTimeout(tid); tid=window.setTimeout('time()',to);}function start(x) { f=x; to=60; time(x); }function cleartids() { window.clearTimeout(tid);}";
        $scr = 'function GoBack() { if (confirm("Are you sure you want to go to the previous page?")) { history.back() } }timestr = "00:00:00";tid = 0;pause = 0;var to;var bcount;var tcount;function writer(){document.write("test"); }function time(n) { tid=window.setTimeout("time(1)",to); today = new Date() if(today.getMinutes() < 10){ pad = "0"} else pad = ""; if(today.getSeconds() < 10){ pads = "0"} else pads = "";timestr=today.getHours()+":"+pad+today.getMinutes()+":"+pads+today.getSeconds(); f.result.value = timestr; window.status = timestr; window.clearTimeout(tid); tid=window.setTimeout("time()",to);}function start(x) { f=x; to=60; time(x); }function cleartids() { window.clearTimeout(tid);}';
        $objResponse->script($scr);
        return $objResponse;
    }    

    echo '<form name="time">
<input type="text" size="12" name="result" onfocus="this.blur()" style="text-align: center; font-family: sans-serif; font-size: 12pt; background-color: #006699; color: #33CC99; font-weight:bold;">
</form>';

Интересно что не так сделано...
Автор: AlexsWulf
Дата сообщения: 12.03.2009 11:37
Доброго времени суток.

Есть такая задача что то не могу придумать как ее решить
Может у кого есть идея.

Есть таблица на сайте по клику на строке таблицы вызывается форма редактирования строки которая заменяет данную строку

Код: $response->Assign("id_".$name, "innerHTML", "<td colspan='5'>".$this->smarty->fetch('xajax/meta_edit.html')."</td>");
Автор: AlexsWulf
Дата сообщения: 12.03.2009 21:56
Cheery

Цитата:
а где вы такой вызов видели?

Такой код встретил на 4 или странице данной ветки форума.

Насколько я понимаю сейчас у меня проблема которая описана в этой ссылке. Там написано что решение не найдено
И я в полном тупике, не знаю что мне делать
Автор: OlegKor
Дата сообщения: 21.08.2009 02:16
Пытаюсь подключить и использовать xAjax 0.5
Пробую на примере описанном здесь.
Использую на:
Joomla 1.5.10
ОС : FreeBSD
PHP : 5.2.10
MySQL : 5.1.36
Компонент: Собственный.
====================
файл - umcitajax.init.php


Код: <?php
include_once JPATH_LIBRARIES.DS.'xajax'.DS.'xajax_core'.DS.'xajax.inc.php' ;
$xajax = new xajax(JPATH_COMPONENT_ADMINISTRATOR.DS.'umcitajax.func.php');
$xajax->configure('debug', true);
$xajax->configure("javascript URI", '/libraries/xajax/');
$xajax->register(XAJAX_FUNCTION,"doTimestamp");
?>
Автор: Cheery
Дата сообщения: 21.08.2009 02:19

Цитата:
Как только я снимаю коментирование строки ( $xajax->processRequests(); ) я получаю в результате чистую страницу .

включите отображение ошибок или логгирование их в файл.
Автор: OlegKor
Дата сообщения: 21.08.2009 10:44
В логе ошибок ПХП пишется:
PHP Fatal error: Call to undefined method xajax::processRequests()
"Вызов необъявленного метода"

Я тут что то не понимаю, как такое может быть?
Пожалуйста, пожскажите где могут быть грабли, я впервые сталкиваюсь с АЯКС и тем более с xAjаx...
Я в шоке, три строчки кода и невозможно настроить...потерял уже 3-е суток
Автор: Cheery
Дата сообщения: 21.08.2009 20:19
OlegKor

Цитата:

Я тут что то не понимаю, как такое может быть?

какой файл первым вызывается?
и там по ссылке код несколько другой.. например
$objAjax->registerFunction("doTimestamp");
а не ваше
и, кстати, уверены что с путями проблем нет? возможно инклуд не срабатывает.. замените на require и посмотрите что будет
Автор: OlegKor
Дата сообщения: 21.08.2009 23:36
Первым вызывается umcitajax.init.php

>>> и там по ссылке код несколько другой.. например
>>> $objAjax->registerFunction("doTimestamp");

По ссылке (в примере) как я уже понял, для версии xajax 0.2 а у меня xajax 0.5
В связи с этим есть замены. В новой версии произошли изменения, в частности registerFunction заменена на register ... Так же еще сам досмотрелся что эти изменения коснулись и addAssign, теперь assign. Такие и другие изменения задекларированы ТУТ (и как всегда самое интересное в последних строчках) ...

К стати, $xajax->processRequests(); и $xajax->processRequest(); - это тоже различие версий и оно значительное.

Вобщем, учитывая изменения в новой версии я тщательно пересмотрел свой код и внес немало поправочек, но теперь я имею другую проблему (надеюсь последнюю):

Дебагер xAjax-а выдает ошибку:
ERROR: No response processor is available to process the response from the server.

Целый день над ней бьюсь и не могу решить, может кто подскажет?


Код: xajax debug output
Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

DONE [517ms]

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

ERROR: No response processor is available to process the response from the server.
Content-Type: text/html; charset=utf-8


Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

RECEIVED [status: 200, size: 34922 bytes, time: 500ms]:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>>>>>>>>>>>>>>>>>>>>ЗДЕСЬ КОД ВСЕЙ СТРАНИЦЫ --- МНОЙ ВЫРЕЗАНО ----- <<<<<<<<<<<<<<<<<<<<<<<<<<<<

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

SENT [37 bytes]

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

SENDING REQUEST

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

CALLING:
xjxfun: doTimestamp
URI:
/usr/local/www/vhosts/MyProbeSite/administrator/components/com_umcit/umcitajax.func.php

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

POST: xjxfun=doTimestamp
&xjxr=1250887656118

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

INITIALIZING REQUEST OBJECT

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

PREPARING REQUEST

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

PROCESSING PARAMETERS [0]

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

INITIALIZING REQUEST

Fri Aug 21 2009 23:47:36 GMT+0300 (FLE Standard Time)

STARTING XAJAX REQUEST
Автор: Cheery
Дата сообщения: 21.08.2009 23:40
OlegKor

Цитата:
Целый день над ней бьюсь и не могу решить, может кто подскажет?

поставьте Firefox и Firebug плагин. посмотрите обмен данными
http://codeigniter.com/forums/viewthread/106394/#543836
Автор: OlegKor
Дата сообщения: 22.08.2009 02:29
2 Cheery

Спасибо за совет!

Действительно Firebug останавливается на строке

Код: try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; }; xajax is not defined
Автор: OlegKor
Дата сообщения: 22.08.2009 18:17
Похоже что xAjax научит "Родину любить" ... Вторые сутки вживления трех строк кода ...
=================================
файл - umcitajax.init.php (стартует первым)

Код: <?php
require_once (JPATH_SITE.'/administrator/components/com_umcit/library/xajax/xajax_core/xajax.inc.php') ;
$xajax = new xajax();
$xajax->configure('debug', true);
$xajax->configure("javascript URI", '../administrator/components/com_umcit/library/xajax/');
$xajax->register(XAJAX_FUNCTION,new xajaxUserFunction('doTimestamp', JPATH_SITE.'/administrator/components/com_umcit/umcitajax.func.php'));
?>
Автор: Cheery
Дата сообщения: 22.08.2009 22:15
OlegKor
проверьте, что у вас нигде нет пробелов перед <?php и после ?>
http://forum.joomla.org/viewtopic.php?f=231&t=253489
Автор: OlegKor
Дата сообщения: 23.08.2009 01:58
=== Мама родная, я скоро загавкаю ...
Ну не идет xAjax, хоть ты ему .....
===========================
2 Cheery, спасибо большое за участие, я вам искренне благодарен.
Сделал я ваши рекомендации и рекомендации по указанной вами ссылке. Нет в моем коде лишних символов ... Кроме того я установил Google Gears. Он чудесно поработал, похоже проинспектировал мои файлы в админконсоли по-своему, все это хорошо, но в результате, я имею то с чего начинал. Уже не знаю смеяться или плакать.

Я опять получил ошибку:
ERROR: No response processor is available to process the response from the server.
Content-Type: text/html; charset=utf-8


Меня уже интересует, а есть ли вообще люди, которые смогли запустить эту "балалайку" на Joomla 1.5 ? Или я пытаюсь выправить то, что и "Создатель" не выправит?
Это просто капец ... "Дети идут в школу" = 17 символов - 35 ошибок.
=========================================
Смотрю дальше, что же здесь происходит?
По сути, получается ... что при попытке отработать задачу, xAjax почему-то возвращает главную страницу фронтенда в:
RECEIVED [status: 200, size: 7202 bytes, time: 148ms]: - об этом говорит xajax debug output
Даже не бекэнда (я сейчас из него работаю и код по сути виден только в нем) а фронтенда и это несколько удивительно. У меня возникает вопрос, что я сделал (или мог сделать) не так? В принципе, я предполагаю, что если в RECEIVED главная страница фронтенда, то эта страница понятия не имеет об xAjax и вероятно по этому получаю ошибку. Я конечно не уверен - это мои догадки. Но если это так и есть, то каким образом переадресация идет на Главную страницу фронтенда. Почему?

Дальше ... У меня в коде есть уже две попытки поднять xAjax. Вторая попытка - это код из примера, который входит в дистрибутив самого xAjax = multiply. Использую код этого примера все в тех же своих файлах:

1. umcitajax.init.php - здесь регистрирую функцию:

require_once (JPATH_COMPONENT_ADMINISTRATOR.DS."library".DS."xajax".DS."xajax_core".DS."xajax.inc.php") ;
$xajax = new xajax(JPATH_COMPONENT_ADMINISTRATOR.DS.'umcitajax.func.php');
$xajax->configure('debug',true);
$xajax->configure('javascript URI','../administrator/components/com_umcit/library/xajax/');
$xajax->register(XAJAX_FUNCTION,'multiply'); - как "книжка пишет" в файле multiply.common.php
============ Все, текст кончился ....

2. umcitajax.func.php - здесь прописываю саму функцию
function multiply($x, $y)
{
    $objResponse = new xajaxResponse();
    $objResponse->assign("z", "value", $x*$y);
    return $objResponse;
} - как "книжка пишет" в файле multiply.server.php
В этом же файле прописано:
require (JPATH_COMPONENT_ADMINISTRATOR.DS.'/umcitajax.init.php');
$xajax->processRequest();
============== Все тут текста больше нету ...

3. В своем файле страницы:
в блоке <?php ... и ... ?> пишу следующее:
require JPATH_COMPONENT_ADMINISTRATOR.DS.'umcitajax.init.php';
echo $xajax->printJavascript();
в теге <form action=" ..................... пишу следующее:
    <input type="text" name="x" id="x" value="2" size="3" /> *
    <input type="text" name="y" id="y" value="3" size="3" /> =
    <input type="text" name="z" id="z" value="" size="3" />
    <input type="button" value="Calculate" onclick="xajax_multiply(document.getElementById('x').value,document.getElementById('y').value);return false;" />
=========== как написано в файле примера - multiply.php
Сохраняю, копирую на сайт, тискаю на кнопочку .....
Результат? Ошибка описанная выше ...

Я три дня не могу запустить 2*3=, а что же будет если надо будет читать данные из базы, заливать их в таблицу и редактировать ...??? Просто Сталинград ...
Автор: Cheery
Дата сообщения: 23.08.2009 02:00
OlegKor

Цитата:
Меня уже интересует, а есть ли вообще люди, которые смогли запустить эту "балалайку" на Joomla 1.5

это лучше спрашивать в теме по данной CMS
Портал Joomla (часть 2)
Автор: OlegKor
Дата сообщения: 23.08.2009 02:12
ОК. Спасибо тебе Cheery ...
Только вот там где "трутся" Joomla, мало кто шарит... Все больше юзают готовое. Мне просто пришлось на время перепрыгнуть с "Windows Application = C#" на Joomla = PHP (так потребовал заказчик в решении приложения-задачи) а виндовые приблуды на FreeBSD и Apache, увы не крутятся ... Вот и хлебаю это все ...
Ладненько. Спасибо тебе еще раз. Буду доставать разработчика xAjax ...
Автор: Cheery
Дата сообщения: 23.08.2009 02:25
OlegKor
ну вы же понимаете, что для этого придется разбираться в архитектуре Joomla и нам.
попробуйте написать просто отдельные файлы, а не модуль, и посмотрите как работает.
либо дайте ссылку на то, что сделали, в сети, чтобы посмотреть как идет обмен и что не так.

Цитата:
ERROR: No response processor is available to process the response from the server

возможно при запросе не указана функция обработки
Автор: OlegKor
Дата сообщения: 23.08.2009 02:38
Cheery ...
Так оно и так работает не касаясь ядра Джумлы. Это абсолютно левые файлы, в которых и крутится только задачка xAjax. Только и того, что используются константы Джумлы определяющие путь (ну чтобы не писать /usr/local/ ... и т.д) и подгружается файл с подключением библиотеки xAjax из Джумловской странички, да еще в этой же страничке прописаны кнопки и эл.управления ХТМЛ ... Вот и все. Я специально не монтировал код в Джумловский Controller-Model-View ... Сделал в отдельных файлах, как вобщем то и демонстрирует разработчик в своих примерах. Ну не принципиально изменил (имена файлов, переменные .. ну вобщем мелочь)
Автор: Cheery
Дата сообщения: 23.08.2009 02:46
OlegKor
ну выложите куда нибудь.. либо просто на сервер и дайте ссылку посмотреть как работает, либо рабочие файлы
Автор: OlegKor
Дата сообщения: 23.08.2009 02:59
http://mps.dimmax.com.ua/administrator/index.php
пользователь: admin
pwd: admin
============
Это не "боевой" сайт - можно чудить что угодно - пробный вариант.

Посмотреть "ошибку" ....
1. Зайти в админ панель (реквизиты в первых строках)
2. Меню "Компоненты"
3. Подменю "UMCIT - Учет штампов"
4. Раздел-меню "Учебные группы"
Здесь и будут пробные кнопочки ...

Как передать файлы, не знаю?
Автор: Cheery
Дата сообщения: 23.08.2009 03:10
OlegKor
у вас явно с обработкой что то не так.. причина - похоже у вас код выполняется дальше и возвращает html страницу.

Цитата:
$xajax->processRequest();

exit;
сделайте после обработки запроса.

либо этот код выводится ДО.. но весь этот HTML код там явно лишний.

Цитата:
Sat Aug 22 2009 20:09:12 GMT-0400 (Eastern Daylight Time)

ERROR: No response processor is available to process the response from the server.
Content-Type: text/html; charset=utf-8

Sat Aug 22 2009 20:09:12 GMT-0400 (Eastern Daylight Time)

RECEIVED [status: 200, size: 31884 bytes, time: 830ms]:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr" id="minwidth" >
<head>

ругается на то, что сервер начал возращать страницу, а ajax код в странице не знает что с ней делать, так как этот HTML ему как снег на голову
Автор: OlegKor
Дата сообщения: 23.08.2009 03:27
Это же самое и я подозревал в своем последнем "откровении"...
Кроме того я как то сомневаюсь что правильно стартую все это. Но такой старт рекомендуется разработчиком. Хотя глядя на код, я бы стартовал чуть иначе...

Вот смотри в код (он коротенький)

Сейчас все стартует с файла umcitajax.init.php ... его содержимое:

<?php
require_once (JPATH_COMPONENT_ADMINISTRATOR.DS."library".DS."xajax".DS."xajax_core".DS."xajax.inc.php") ;
$xajax = new xajax();
$xajax->configure('debug',true);
$xajax->configure('javascript URI','../administrator/components/com_umcit/library/xajax/');
$xajax->register(XAJAX_FUNCTION,new xajaxUserFunction('doTimestamp',JPATH_COMPONENT_ADMINISTRATOR.DS.'
umcitajax.func.php'));
$xajax->register(XAJAX_FUNCTION,new xajaxUserFunction('multiply',JPATH_COMPONENT_ADMINISTRATOR.DS.'
umcitajax.func.php'));
?>

И отсюда, якобы при регистрации функций, как то подключается (что вызывает сомнения) второй файл ....

umcitajax.func.php --- его содержимое:
<?php
function doTimestamp() {
// создаем экземпляр класса xajaxResponse
$objResponse = new xajaxResponse();
// Упрощенная до слез попытка вывести хоть что то... а именно цифрейку 1
$objResponse->assign("timebox","innerHTML",1);
// возвращаем результат функции
return $objResponse;
}

// Это проба второго варианта
function multiply($x,$y)
{
$objResponse = new xajaxResponse();
$objResponse->assign('z','value',$x*$y);
return $objResponse;
}

// Инициализация работы с AJAX, регистрация своих функций
require (JPATH_COMPONENT_ADMINISTRATOR.DS.'umcitajax.init.php');
$xajax->processRequest();
?>
==================
Глядя на содержимое одного и второго, я бы запускал (стартовал) сначала umcitajax.func.php, тогда прописались бы функции, подключился бы 'umcitajax.init.php' проинициализировался xajax и запустился бы $xajax->processRequest();

Это мое мнение такое. Я такой вариант пробую, но не получаю ничего ни ошибок ни рабочего результата ...

Вот пробуй сейчас на сайте еще раз с резельтатом моих предположений ...
Я уже внес поправки ..
Автор: Cheery
Дата сообщения: 23.08.2009 03:30

Цитата:
Это мое мнение такое. Я такой вариант пробую, но не получаю ничего ни ошибок ни рабочего результата ...

Вот пробуй сейчас на сайте еще раз с резельтатом моих предположений ...
Я уже внес поправки ..

ну, как видите..

Цитата:
ERROR: ResponseReceived: Invalid response XML: The response contains an unexpected tag or text: {data}.

Sat Aug 22 2009 20:29:00 GMT-0400 (Eastern Daylight Time)

RECEIVED [status: 200, size: 108 bytes, time: 247ms]:


<?xml version="1.0" encoding="utf-8" ?>
<xjx>
<cmd cmd="as" id="timebox" prop="innerHTML">N1</cmd>
</xjx>

я бы сказал, что тут лишний перенос строки перед <?xml
или пробел
я же говорю.. что где то после ?> в php коде у вас, похоже, пару пустых строк. или перед <?php

вот и выводятся они, а потом идет ajax ответ. но пустое место перед <?xml является ошибкой
Автор: OlegKor
Дата сообщения: 23.08.2009 03:35
>>> я бы сказал, что тут лишний перенос строки перед <?xml
или пробел
--------------
Возможно но... Я даже не знаю где править ... Ведь структуру XML формирует сам xAjax вот тут:
$objResponse->assign("timebox","innerHTML",1);
Я ему просто нагло впихиваю цифру - 1 и он мне выссказывает о неправильном формате XML. Где мне это выравнивать, я не могу и предположить. Мне что в исходниках править?

Добавлено:
Вот еще кусок. который этого может касаться - это страничка с элементами HTML

<p>Пример 1: Получение времени сервера</p>
<p>Нажав на кнопку ниже, время будет запрошено с сервера и показано внутри прямоугольной области без перезагрузки страницы.</p>
<div id="timebox">&nbsp;</div>
<input type="button" class="button" value="Посмотреть время" onclick="xajax_doTimestamp();" />
======================
Вот в этом месте

<div id="timebox">&nbsp;</div>

????
Автор: Cheery
Дата сообщения: 23.08.2009 03:39
OlegKor

Цитата:
Мне что в исходниках править?

не нужно там править..
при чем тут структуру xml?
если у вас, к примеру, будет
echo " ";
а потом
$xajax->processRequest();
то этот пробел пойдет как часть ответа, скорее всего. я не возился с этой библиотекой. может она и делает очистку буфера сначала, но судя по пред. случаю с html кодом - вряд ли.
проверьте свои файлы, как и сказал.. что нет пробелов до <?php и особенно после ?>

Цитата:
Вот еще кусок. который этого может касаться - это страничка с элементами HTML

не может. речь об ответе сервера, а не коде на странице
Автор: OlegKor
Дата сообщения: 23.08.2009 03:55
Бли-и-и-и-н !!!!
Заработало ...
Глазам своим не верю ...
И недели не прошло ...

Cheery
Спасибо тебе огромнейшее за помощь ...
Автор: Topacio
Дата сообщения: 02.09.2009 17:12
Здравствуйте!
У меня такой вопрос: есть xajax-функция loadInfo() (в javascript). Она выполняется определённое время. Если во время выполнения этой функции произошло событие mouseout, то можно как-то в функции, связанной с этим событием, отменить функцию loadInfo()?
Автор: OlegKor
Дата сообщения: 23.09.2009 09:42
Всем добрый день!

Вот столкнулся с проблемкой. на которую не могу найти ответы и решение, может кто знает как разрешить мою ситуацию.

Суть в следующем:

В моем проекте для вывода (показа) модальных окон используется библиотека MooTools.
В обычном PHP это работает без проблем и это у меня реализовано почти повсеместно, где такое необходимо. Но вот возникла необходимость при формировании с помощью xAjax 0.5 таблицу и передавать в некоторых ячейках таблицы теги <a> в виде иконок-кнопок. И в общем это все работает изумительно за исключением одного нюанса. В одной из таких кнопок мне надо поднять модальное окно и отобразить в нем форму. И вот тут происходит как-раз тот затык, который я не могу решить ....

Подробности:

Функция xAjax, в которой формируется таблица и передается на страницу (код PHP с использованием движка Joomla 1.5).


Код: function listEnterpForMedical($idMedical)
{
// Получаем объект работы с БД
$db =& JFactory::getDBO();
// Формируем запрос к базе
$query='SELECT tableRelation.id AS `id`, tableRelation.id_enterprise AS `id_enterprise`, tableRelation.date_insert AS `date_insert`, tableEnterprise.name AS `short_name` FROM #__umcit_relation_enterprise_of_medical AS tableRelation LEFT JOIN #__umcit_enterprise AS tableEnterprise ON tableEnterprise.id = tableRelation.id_enterprise WHERE tableRelation.id_medical='.$idMedical;
$db->setQuery($query);
// Получим результаты запроса к безе в переменную $rows
$rows = $db->loadObjectList();
// Обработка ошибок
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
$output='';
if ( empty($rows)) {
$output='<tr ><td colspan="2" align="center" valign="center" >'.JText::_('UMCIT NO DATA ENTERPRISE').'</td></tr>';
} else {
$atitle = JText::_('DELETE');
$stitle = JText::_('ADD SHTAMP');
foreach ($rows as $k => $row) {
$sht = getStampForEnt($row->id_enterprise, $idMedical);
$path = JRoute::_('index.php?option=com_umcit&view=enterprise&cat=selling&id='.$row->id_enterprise.'#edit');
$output .='<tr><td>'.$sht.'</td>';
$output .='<td width="100%"><a href="'.$path.'">'.$row->short_name.'</a></td>';
if ($sht =='--------') {
$output .='<td align="center"><a class="modal" title="'.$stitle.'" href="index.php?option=com_umcit&view=addshtamps&layout=form&tmpl=component" rel="{handler: '.'iframe'.', size: {x: 800, y: 600}}">'.JHTML::_('image.site', 'stamp.png', '../media/com_umcit/images/').'</a><a href="#" title="'.$atitle.'" onclick="xajax_DeleteEnterpForMedical('.$row->id_enterprise.','. $idMedical.');xajax_listEnterpForMedical('.$idMedical.');">'.JHTML::_('image.site', 'media_trash.png', '../media/com_umcit/images/').'</a></td></tr>';
} else {
$output .='<td align="center"><strong><a href="#" title="'.$atitle.'" onclick="xajax_DeleteEnterpForMedical('.$row->id_enterprise.','. $idMedical.');xajax_listEnterpForMedical('.$idMedical.');">'.JHTML::_('image.site', 'stamp_del.png', '../media/com_umcit/images/').'</a></strong></td></tr>';
}
}
}
Автор: extonec
Дата сообщения: 01.12.2009 11:54
приветствую, подскажите плиз вернуть из функции через return сначала одно значение objResponse->assign("block","style.width","$width"); и через например 1 секунду второе значение? objResponse->assign("block","style.width","$width");
Автор: OlegKor
Дата сообщения: 01.12.2009 15:25
Сам параметр "$width", второй раз откуда берется?
Вот после каждого получения параметра делайте
objResponse->assign("block","style.width","$width"); ... и ....
return objResponse;

Если параметр получаем в цикле. значит в цикл вставляйте
objResponse->assign("block","style.width","$width");
При каждом проходе будет проинициализирован
objResponse->assign

Выведет только последнее значение (в Вашем случае).

Тут еще не плохо понять что и в каком виде выводится ...
Если нам надо передать значение в каждом отдельном случае в объект "block", то надо для каждого случая делать и отдельный return objResponse;
... Предыдущее значение "затираем" новое показываем.
(можно организовать отдельную функцию в которой все рализовать для одного случая, а затем эту функцию вызывать при необходимости из нужного места... через секунду или две ... или по событию.
Или же отдельную функцию для получения значения ...","$width");, в этой функции делаем нужную задерку по времени или по событию, затем возвращаем, присваиваем в objResponse->assign("block","style.width","$width"); и затем уже выводим результат через return objResponse;)

Если же добавить значение к существующему (уже назначенному ранее) объекту "block", тогда присоединяем эти значения одно к другому (в цикле или по событию) и выводим по оканчанию (по окончанию цикла) все одним
return objResponse;

Добавлено:
extonec ... в любом случае вырисовуются одно условие:

Если в некой функции работает, допустим, цикл и в цикле присваивается значение. которое затем передается в objResponse->assign( ....); и в этой же функции возвращается значение через return objResponse;. То нельзя сослаться на какую то иную функцию в которой реализован свой return objResponse;, просто после этого указатель не вернется в предыдущую (вызываемую) функцию .. действие прекратится на первом же встретившемся return objResponse;

Если нам нужен таймер на выполнение какой-то функции xajax_funct, то на мой взгляд лучше организовать этот таймер не в теле самой функции АЯКСа, а скажем на страничке в BODY, ну к примеру подобно этому:

Код: <script language="javascript" type="text/javascript">
window.onload=function(){

setInterval('xajax_startvalid_fields_form_medcom(xajax.getFormValues(\'umcitForm\'))', 10000);

}
</script>
Автор: BigInventoR
Дата сообщения: 18.03.2011 14:29
Помогите пожалуйста понять, почему значения которые возвращаются в поля вместо ОК или ERROR под PHP5.3 становятся null?
Версия xajax 0.6 beta1, на 0.5 не работает.

index.php

Код:
<?php

require_once ("xajax_core/xajax.inc.php");

require_once ("control.php");
require_once ("result.php");
$xajax = new xajax();
$xajax->configure("debug", true);

// регистрация функций
$xajax->register(XAJAX_FUNCTION,"Control");
$xajax->register(XAJAX_FUNCTION,"Result");

$xajax->processRequest();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title> Пример 1 (глава 8)к книге </title>

<?php $xajax->printJavascript(''); ?>

</head>

<body>

<!-- шапка -->

<div id=header1><b>Примеры к книге (глава 8 пример 1)<br>
Вывод результатов с использованием Smarty</b></div>
<br>
<!-- Форма -->
<div id='div1'>
<form id='Form1' action='javascript:void(null);' onsubmit='
xajax.$("Button_Form1").disabled=true;
xajax.$("Button_Form1").value="Подождите...";
xajax_Result(xajax.getFormValues("Form1"));'>
<table>
<!-- login -->
<tr>
<td>Логин (5-15 буквы,цифры)</td>
<td><input type='text' name='login' id='login' value=''
onchange='xajax_Control(xajax.getFormValues("Form1"));'></td>
<td><div id='error_login'><font color='red'>no</font></div></td>
</tr>
<!-- password -->
<tr>
<td>Пароль (5-15 буквы,цифры)</td>
<td><input type='password' name='password' id='password'
onchange='xajax_Control(xajax.getFormValues("Form1"));'></td>
<td><div id='error_password'><font color='red'>no</font></div></td>
</tr>
<!-- подтверждение password -->
<tr>
<td>Повторите пароль</td>
<td><input type='password' name='password1' id='password1' value=''
onchange='xajax_Control(xajax.getFormValues("Form1"));'></td>
<td><div id='error_password1'><font color='red'>no</font></div></td>
</tr>
<!-- email -->
<tr>
<td>Ваш e-mail</td>
<td><input type='input' name='email' id='email' value=''
onchange='xajax_Control(xajax.getFormValues("Form1"));'></td>
<td><div id='error_email'><font color='red'>no</font></div></td>
</tr>

<tr>
<td></td>
<td><input type='submit' id='Button_Form1' disabled=true
value='Зарегистрироваться ->' ></td>
<td></td>
</tr>

</table>
</div>
<div id='result'>
</div>

</body>
</html>

Страницы: 12345678910

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


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