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

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

Автор: arcanum
Дата сообщения: 21.08.2007 06:28
Парни, не знаю, может мой пост будет относится не совсем к данной ветке, так уж сильно не сердитесь....главное что по теме Ajax'a. Я сразу говорю, что только только начинаю грызть гранит науки в области аякса и у меня возникла проблема, в выборе, а самое главное в применении данной технологии в связке с популярным шаблонизатором Smarty. Наверняка многие знают, такие популярные библиотеки как sajax, xajax ну и конечно JsHTPPRequest, куда же без него, так вот я в упор не могу применить данные либы в движке (речь идет о cpengine от dream4.de ну или тот же Koobi можно привести в пример). Вобщем мал мала я разобрался и с sajax и JSHTTPRequest, даже попробовал написать свой простенький код, но проблема связана с тем, что во всех примерах, для любой либы, постоянно идет плотная связка HTML + PHP и я даже ума не могу приложить, как все это дело связать еще и со Smarty....если у кого есть опыт в данной сфере, отпишитесь плиз, или хотя бы дайте линки на маны, где можно про это подробно почитать (сам в инете не нашел)... В принципе за хороший, подробный и с примерами самостоятельно написанный ман, могу денюжку перевести по Вебманям.. )) За знания надо платить ))

Но!! Конечно же, многие наверняка сразу напишут: "Как ты искал?? Разьве вот это не видел??"

_http://kpumuk.info/ajax/ajax-enabled-smarty-plugins/

Скажу сразу что был, видел, исходники слил, примеры посмотрел, но честно сказать - документация вообще никакая и толку от этих двух строчек от автора абсолютно никакого... там даже кто-то спрашивал в комментах, как привентить на Koobi данные плагины, но ответа небыло....Вобщем я думаю смысл моего вопроса понятен и я буду безмерно рад хоть какой-нить помощи со стороны Вас, Уважаемые господа, кто имел дело в данном направлении, а именно еще раз повторюсь связка: PHP + Smarty + Ajax
Автор: Damned_WarGot
Дата сообщения: 25.08.2007 19:38
Вопрос по вызову функции из функции
<?
require_once ('xajax.inc.php');
error_reporting(0);
function test1($a){
if ($a==2){
// надо загрузить функцию test2, и передать туда значение 2
}
else
{
// надо загрузить функцию test3, и передать туда значение 3
}
}
function test2($a){
$text = $text + $a;
$objResponse = new xajaxResponse();
$objResponse->setCharEncoding('windows-1251');
$objResponse->addAssign("result","innerHTML",$text);
return $objResponse;
}
function test3($a){
$text = $text + $a;
$objResponse = new xajaxResponse();
$objResponse->setCharEncoding('windows-1251');
$objResponse->addAssign("result","innerHTML",$text);
return $objResponse;
}

$xajax = new xajax();
$xajax->registerFunction("test1");
$xajax->registerFunction("test2");
$xajax->registerFunction("test3");
$xajax->setCharEncoding("windows-1251");
$xajax->processRequests();
?>
<html>
<head>
<meta content="text/html; charset=Windows-1251" http-equiv="content-type">
<?php $xajax->printJavascript('../');?>
<title>Title</title>
</head>
<body>
<div id="result"></div>
<div id="other"><input type="button" onclick="xajax_test1(2)" value = "Gooo"></div>
</body>
</html>



Добавлено:
Ещё один вопросик появился, xajax не хочет выводить <map>
Вот код, что сделано неправильно ? Просто картинку отлично выводит

[more]<?
require_once ('xajax.inc.php');

error_reporting(0);
function view_map($a){
$text = "<MAP NAME='map.jpg'><AREA SHAPE=\"POLYGON\" COORDS=\"236,205,250,204,253,197,257,195,256,190,243,189,246,185,246,182,243,180,244,175,248,172,248,167,258,166,260,158,269,156,274,158,284,159,286,151,298,137,306,132,314,139,321,136,327,144,332,143,339,140,356,143,354,156,356,160,360,160,369,152,387,148,390,151,394,151,397,155,404,156,404,162,415,163,414,179,411,183,415,184,416,191,420,194,420,200,412,217,420,221,422,226,430,227,426,236,434,239,436,247,423,246,421,243,420,246,414,246,411,245,394,255,379,251,371,258,367,247,373,237,357,237,355,241,337,241,327,234,301,233,288,218,281,218,280,220,266,220,264,217,237,219,235,215,236,204,251,203,251,203,251,203\" NOHREF onclick=\"xajax_view_obl_id(1)\" OnMouseOut=\"window.status='asd'; return true\"></MAP>";
/* просто картинку отлично выводит
$text = "<img src = 'map.jpg'";
*/
$objResponse = new xajaxResponse();
$objResponse->setCharEncoding('windows-1251');
$objResponse->addAssign("result","innerHTML",$text);
return $objResponse;
}

$xajax = new xajax();
$xajax->registerFunction("view_map");
$xajax->setCharEncoding("windows-1251");
$xajax->processRequests();
?>
<html>
<head>
<meta content="text/html; charset=Windows-1251" http-equiv="content-type">
<?php $xajax->printJavascript('../');?>
<title>TITle</title>
</head>
<body onload="xajax_view_map(1);">
<div id="warning"></div>
<div id="result"></div>
</body>
</html>
[/more]
Автор: Cheery
Дата сообщения: 25.08.2007 19:44
Damned_WarGot

Цитата:
Вопрос по вызову функции из функции

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


Цитата:
Вот код, что сделано неправильно ? Просто картинку отлично выводит

блин.. читай ссылку в подписи о том, как нужно задавать вопросы. тут нет телепатов.
не объясняя ни что происходит, ни как нужно, чтобы работало.
Автор: Damned_WarGot
Дата сообщения: 25.08.2007 19:58

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

Тогда получается у меня пробел не в знаниях xajax, а в знаниях php. Как её вызвать ? Код плз в студио -)


Цитата:
блин.. читай ссылку в подписи о том, как нужно задавать вопросы. тут нет телепатов.
не объясняя ни что происходит, ни как нужно, чтобы работало.

При загрузке страницы
Цитата:

<body onload="xajax_view_map(1);">

скрипт вызывает функцию view_map. Функция должна вывести в див

Цитата:
<div id="result"></div>

значение данной переменной:
[more]
Цитата:
$text = "<MAP NAME='map.jpg'><AREA SHAPE=\"POLYGON\" COORDS=\"236,205,250,204,253,197,257,195,256,190,243,189,246,185,246,182,243,180,244,175,248,172,248,167,258,166,260,158,269,156,274,158,284,159,286,151,298,137,306,132,314,139,321,136,327,144,332,143,339,140,356,143,354,156,356,160,360,160,369,152,387,148,390,151,394,151,397,155,404,156,404,162,415,163,414,179,411,183,415,184,416,191,420,194,420,200,412,217,420,221,422,226,430,227,426,236,434,239,436,247,423,246,421,243,420,246,414,246,411,245,394,255,379,251,371,258,367,247,373,237,357,237,355,241,337,241,327,234,301,233,288,218,281,218,280,220,266,220,264,217,237,219,235,215,236,204,251,203,251,203,251,203\" NOHREF onclick=\"xajax_view_obl_id(1)\" OnMouseOut=\"window.status='asd'; return true\"></MAP>";
[/more]
не выводит, но !!

Цитата:
$text = "<img src = 'map.jpg'";

просто картинку - выводит.
Автор: Cheery
Дата сообщения: 25.08.2007 20:03
Damned_WarGot

Цитата:
Как её вызвать ? Код плз в студио -)

test2(2);
разве не очевидно?

Цитата:
не выводит, но !!

учите html, а?
где картинка, к которой цепляет карта?
Автор: Damned_WarGot
Дата сообщения: 25.08.2007 20:07

Цитата:
test2(2);
разве не очевидно?

Для меня нет, спасибо !


Цитата:
учите html, а?
где картинка, к которой цепляет карта?

Ещё раз спасибо !





Убейте меня, пока я не начал писать индийский код -(
Автор: qazaqazaq
Дата сообщения: 25.08.2007 23:39
Приветик, помогите пожалуйста, очень нужен полный, простой пример, чтоб разобраться, как используя технологию Ajax по кнопке вывести значения(масив) из базы MySQL в таблицу или целиком таблицу. Уже обраскал весь интернет, перечитал весь топик, но полного работающего примера так и не нашел(((
Я новичек в Ajax и мне нужен полный и простой пример работы с базой mySQL)
За раннее огромное спасибо!
Автор: Cheery
Дата сообщения: 25.08.2007 23:47
qazaqazaq
не нужно выделать весь текст - это нарушение правил.


Цитата:
) из базы MySQL в таблицу или целиком таблицу. Уже обраскал весь интернет, перечитал весь топик, но полного работающего примера так и не нашел(((
Я новичек в Ajax и мне нужен полный и простой пример работы с базой mySQL)

повторю еще раз.. ajax тут вообще не при чем.
делай так, как бы ты выводил эту таблицу на странице, которую генеришь с помощью php
скрипт php будет только ЭТО и делать - генерить html страницу с кодом таблицы внутри.
далее javascript часть ajax будет получать этот код и вставлять в страницу.
Автор: qazaqazaq
Дата сообщения: 26.08.2007 00:40
Хорошо, задаю конкретней вопрос! Вот есть код PHP выборка MySQL, в упрощенной форме, чтоб не загромождать, как прикрутить xajax? Ну ткните носом меня, ну хочу разобраться)))))


Код:
<?php
$SERVER = 'localhost';
$USER = 'root';
$PASSWD = '1qaz2wsx';
$DB = 'dial';

//Подключаемся
if (!mysql_connect($SERVER,$USER,$PASSWD))
{
echo "Не могу подключиться";
exit;
}
else
{
//Выбираем базу
mysql_select_db($DB);
}

//Заголовок таблицы
echo "<Table align='center' border='0' width='590' cellpadding='2' cellspacing='2' bgcolor='#FFFFFF'>";
echo "<TR valign='middle' bgcolor='#7E8A97'>
<td width="80" align="center"><B>поле1</B></td>
<td width="80" align="center"><B>поле2</B></td>
<td width="80" align="center"><B>поле3</B></td>
<td width="80" align="center"><B>поле4</B></td>";

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$res = mysql_query("SELECT * FROM ftcdr ");
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

$f=mysql_fetch_array($res);

//Выводим таблицу
echo "<TR>";
echo "<td align='center' valign='center'>$f[Data]</TD>
<td valign='center' align='center'>$f[StartTime]</TD>
<td valign='center' align='center'>$f[Kuda]</TD>
<td valign='center' align='center'>$f[Time]</TD>
</TR>";
echo "</TR></Table>";
?>
Автор: Cheery
Дата сообщения: 26.08.2007 00:44
qazaqazaq

Цитата:
как прикрутить xajax? Ну ткните носом меня, ну хочу разобраться)))))

а пару постов выше - не видно???
плюс в шапке..
Автор: qazaqazaq
Дата сообщения: 26.08.2007 13:48
О да, мне это так все помогло, такой результативный ответ, а самое главное по существу
Автор: Damned_WarGot
Дата сообщения: 26.08.2007 19:47

Цитата:
qazaqazaq

http://wargot.com/?p=29#more-29
В самом низу есть шаблонка xajax. Далее на неё навешивай то что тебе надо.


Цитата:
Cheery

Ничерта не получается с таким вызовом функции. Может в xajax свои загоны есть какие-нить ?

Код:

Цитата:

<?
require_once ('xajax.inc.php');
error_reporting(0);
function test1($a){
    test2($a."from function first");
}
function test2($a){
    $text = $a;
    $objResponse = new xajaxResponse();
    $objResponse->setCharEncoding('windows-1251');
    $objResponse->addAssign("result","innerHTML",$text);
    return $objResponse;
}


$xajax = new xajax();
$xajax->registerFunction("test1");
$xajax->registerFunction("test2");
$xajax->setCharEncoding("windows-1251");
$xajax->processRequests();
?>
<html>
<head>
<meta content="text/html; charset=Windows-1251" http-equiv="content-type">
<?php $xajax->printJavascript('../');?>
<title>Title</title>
</head>
<body onload="xajax_test1(2)">
<div id="result"></div>
<div id="other"><input type="button" value = "Gooo"></div>
</body>
</html>

Хде ошибка ?
Автор: qazaqazaq
Дата сообщения: 27.08.2007 00:41
Damned_WarGot

Цитата:
http://wargot.com/?p=29#more-29
В самом низу есть шаблонка xajax. Далее на неё навешивай то что тебе надо.


Спасибо попробую))))
Автор: Cheery
Дата сообщения: 27.08.2007 19:01
Damned_WarGot

Цитата:
Ничерта не получается с таким вызовом функции. Может в xajax свои загоны есть какие-нить ?

начем с того, а что должно "получиться"?
при чем тут ajax, если это основы php?

Цитата:
return $objResponse;

возвращает куда??
в test1
а она использует это возвращаемое значение? нет, поэтому и результата нет
писать тогда return test2($a."from function first");


qazaqazaq

Цитата:
О да, мне это так все помогло, такой результативный ответ, а самое главное по существу

мне начинают надоедать те, кто не хочет думать.. учитесь - всегда пригодится.
все примеры уже были приведены в этой теме и не раз. все, что нужно, просто просмотреть хотя бы пару страниц
Автор: webdeveloper
Дата сообщения: 28.08.2007 23:43
В IE7 при выполнение одного и того-же кода иногда выскакивают ошибки а иногда нет. Встроеный отладчик почти информации об ошибках не предоствляет. Посоветуйте, пожалуйста, софт для отладки для браузера IE7
Автор: Cheery
Дата сообщения: 29.08.2007 00:39
webdeveloper
microsoft script editor
Автор: Damned_WarGot
Дата сообщения: 01.09.2007 00:14
Кто-нибудь сталкивался с проблемой совместимости xajax и jquery (плагина Thickbox) ? Гугл ответа не дал. Проблема заключается в том, что при выводе Thickbox кода xajax`ом он перестаёт работать как ему положено, и работает как обычный хтмл.
Автор: Cheery
Дата сообщения: 01.09.2007 00:21
Damned_WarGot
значит, возможно, перекрываются переменные в js
Автор: Damned_WarGot
Дата сообщения: 01.09.2007 00:26

Цитата:
значит, возможно, перекрываются переменные в js

Хммм, возможно. Если я правильно понял Вы предлагаете поискать совпадения имён переменных ?
Автор: Cheery
Дата сообщения: 01.09.2007 00:28
Damned_WarGot

Цитата:
Хммм, возможно. Если я правильно понял Вы предлагаете поискать совпадения имён переменных ?

а другого варианта в js и нет, который бы подобное делал.. создавать проблемы
ну разве что поля имеют одинаковые ID или name
Автор: SRangeR
Дата сообщения: 10.09.2007 13:31
как сделать чтобы около значка [?] появлялось всплывающие сообщение средствами xAJAX...
Автор: 6epcepk
Дата сообщения: 10.09.2007 21:02

Код: [ <a href="#" onMouseOver="xajax_show(1)">?</a> ] <div id='1-box' style='display: none'></div>

function test($id) {
$objResponse = new xajaxResponse();
$objResponse->assign($id . '-box', 'innerHTML', 'blabla');
return $objResponse;
}
Автор: orionxxi
Дата сообщения: 12.09.2007 09:54
Доброго времени суток,

кто может подсказать, как заставить работать следующий скрипт (Ссылка) с версией 0.5.
Проблема состоит в том, что при очистке поля ввода, не изменяется значение которое появляется рядом.
Заранее спасибо.
Автор: 6epcepk
Дата сообщения: 12.09.2007 10:02

Код: $objResponse->addAssign("ncheck", "innerHTML", $checkVal);
Автор: orionxxi
Дата сообщения: 12.09.2007 10:23
Все сделал так же, за исключением изменения цвета выводимого сообщения, однако не работает.

Код: <?php
ini_set('display_errors', 'On');



require ('xajax_core/xajax.inc.php');

function checkName($sName) {

if(preg_match('/^([ a-zA-Z]){0,50}$/', $sName)) {
$checkVal = "ok!";
if(strlen($sName) < 2) {
$checkVal = "too short!";
}
if($sName == "") {
$checkVal = "";
}
}
else {
    if(strlen($sName) > 0) {
$checkVal = "not a name";
}
}

$objResponse = new xajaxResponse();

/* Setup the xajaxResponse object to update the HTML object
having ID 'ncheck' */

$objResponse->assign("ncheck", "innerHTML", $checkVal);

/* If the value of $checkVal is 'ok!' we make the element green.
In other cases we make it red */

if ($checkVal == "ok!") {
$objResponse->script("document.getElementById('ncheck').style.color = 'green';");
}
else {
$objResponse->script("document.getElementById('ncheck').style.color = 'red';");
}

/* return the output */

return $objResponse;
}

function checkAge($nLeeftijd) {

/* Check the age. */

$checkVal = "ok!";
if((!is_numeric($nLeeftijd)) && (strlen($nLeeftijd) > 0)) {
    $checkVal = "not a number";
}
else {
if($nLeeftijd < 18) {
     $checkVal = "too young";
}
if($nLeeftijd > 65) {
$checkVal = "too old";
}
if($nLeeftijd == "") {
$checkVal = "";
}
}


$objResponse = new xajaxResponse();
if ($checkVal == "ok!") {


$objResponse->script("document.getElementById('lcheck').style.color = 'green';");
}
else {
$objResponse->script("document.getElementById('lcheck').style.color = 'red';");
}


$objResponse->assign("lcheck", "innerHTML", $checkVal);



return $objResponse;

}

$objAjax = new xajax();

$objAjax->registerFunction("checkName");
$objAjax->registerFunction("checkAge");


$objAjax->processRequest();

?>
<head><? $objAjax->printJavascript(); ?></head>
<h1>Demo 2: Real-time server-side form validation</h1>
<p>When filling out these fields, real-time validation is performed on the server to check whether some simple requirements are met.</p>
<h2>Notice: This form is only for people from 18 up to and including 65 years of age.</h2>
<div id="div1">&#160;</div>
<br/>
<div id="aanmeldformulier">
<form action="validate.php" method="post">
<table border="0">
<tr>
<td><label for="naam">Name:</label></td>

<td><input autocomplete="off" class="textbox" type="text" name="naam" id="naam" onkeyup="xajax_checkName(document.getElementById('naam').value);" /></td>
<td><span id="ncheck"></span></td>
</tr>
<tr>
<td><label for="leeftijd">Age:</label></td>
<td><input autocomplete="off" class="textbox" type="text" name="leeftijd" id="leeftijd" onkeyup="xajax_checkAge(document.getElementById('leeftijd').value);" /></td>
<td><span id="lcheck"></span></td>
</tr>
</table>
</form>
</div>
<p><a href="demonstratie2.phps">View the source code</a></p>
<p id="menulink"><a href="demonstratie.php">&raquo; Back to main page</a></p>
Автор: 6epcepk
Дата сообщения: 12.09.2007 11:42
Можно выложить в сеть? Я дебаггером посмотрю, или попробуйте вывести тестовое сообщение, вызывается ли вообще функция.
Автор: orionxxi
Дата сообщения: 12.09.2007 12:43
В сеть выложил, ссылку отправил по icq. Функция вызывается.
Автор: orionxxi
Дата сообщения: 14.09.2007 12:16
Проблема все еще актуальна.
У кого-нибудь есть идеи?
Автор: orionxxi
Дата сообщения: 15.09.2007 11:57
Проблема разрешилась:


Цитата:
orionxxi,

I am sorry that you have encountered this issue (since I wrote the code that had the bug in it)...

Please download xajax 0.5 beta 4b from sourceforge as it contains that specific bug fix.

// Joe


Надеюсь, кому-то пригодится.
Автор: SRangeR
Дата сообщения: 20.09.2007 00:36
можно ли как нить с помошью Хаякса изменить высоту произвольного Div"а находящегося на странице?

Страницы: 12345678910

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


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