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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RiNeo
Во-первых, мой вам совет: используйте версию 0.5 beta.
Во-вторых, ini_set("error_reporting", E_ERROR), потому что ошибка где-то в коде однозначно.

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 08:33 19-03-2007
RiNeo



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
6epcepk
Все равно не получается.
Простой текст выводится, а таблица не хочет.
Раньше хоть какое-то сообщение об ошибке вываливалось, а теперь молчком все делает.
 
Добавлено:
В документации, которая на Вики я мало чего понял, так как по-инглиш еще плох...

Всего записей: 26 | Зарегистр. 14-03-2006 | Отправлено: 16:28 19-03-2007
6epcepk



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

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 22:56 19-03-2007
RiNeo



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
берсерк
Посмотри пожалуйста

Код:
 
<?php
 
/* Всегда подключаем файл из библиотеки xAjax*/
require('xajax_core/xajax.inc.php');
 
/* Эта функция возвращает информацию о текущем времени */
function PrintGroupList($num) {
 
    /* создаем экземпляр класса xajaxResponse */
    $objResponse = new xajaxResponse();
    /**
    include "config.php";
    $query = 'SELECT s_name, name, f_name FROM Students WHERE group_id = '.$num.' LIMIT 0, 30';
    $rez = mysql_query($query);
    if($rez) {
        $i = 0;
        $sOut = '<table><caption>Группа:</caption><colgroup span="5"><col id="c_0" /><col id="c_1" /><col id="c_2" /><col id="c_3" /><col id="c_4" /></colgroup>';
        
        $objResponse->assign("tablebox", "innerHTML", $sOut);
        $sOut = '<thead><tr><th id="no_bord">&nbsp;</th><th>№<br />п/п</th><th>Фамилия</th><th>Имя</th><th>Отчество</th></tr></thead><tbody>';
        $objResponse->assign("tablebox", "innerHTML", $sOut);
        $sOut = '<tr><form action="action2.php" method="POST"><td id="no_bord"><input type="checkbox" name="option1" value="a1" /></td>';
        $objResponse->assign("tablebox", "innerHTML", $sOut);
        while($rezult = mysql_fetch_assoc($rez)) {
            $i++;
            $sOut = '<td class="pad1 rght">'.$i.'.</td><td class="pad1">'.$rezult["s_name"].'</td>';
            $objResponse->assign("tablebox", "innerHTML", $sOut);
            $sOut = '<td class="pad1">'.$rezult["name"].'</td><td class="pad1">'.$rezult["f_name"].'</td></form></tr>';
            $objResponse->assign("tablebox", "innerHTML", $sOut);
        }
        $sOut = '</tbody></table>';
    }
    else {
        $sOut = '<p><b>Error: '.mysql_error().'</b></p>';
    }
    */
    /* Устанавливаем объект xajaxResponse для обновления элемента HTML у которого ID = 'tablebox' */
    $sOut = 'Привет!! - '.$num;
    $objResponse->assign("tablebox", "innerHTML", $sOut);
   
    /* возвращаем результат функции */  
    return $objResponse;
}
 
 
/* создаем экземпляр класса  xajax */
$objAjax = new xajax();
 
$objAjax->setCharEncoding("windows-1251");
 
/* регистрируем функцию 'PrintGroupList' для объекта xajax */
$objAjax->registerFunction('PrintGroupList');
 
/* обрабатываем запрос */
$objAjax->processRequest();
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/xml; charset=windows-1251" />
    <title>Курсовой - группы</title>
    <?php $objAjax->printJavascript('../'); ?>
    <link rel="stylesheet" type="text/css" href="style_groups.css" />
</head>
<body>
    <div id="header">
        <a href="index.php">Главная</a> | Управление группами | <a href="sets.php">Настройки</a>
    </div>
    <div id="wrapper">
        <div id="container">
            <div id="content">
                <h1>Здесь должна отображаться текущая группа:</h1>
                <div id="tablebox" name="tablebox" >&#160;</div>
                <p class="last">
                    Donec euismod. Praesent mauris mi, adipiscing non, mollis eget, adipiscing ac, erat. Integer
                    nonummy mauris sit.
                </p>
            </div>
        </div>
        <div id="sidebar">
            <h1>Группы:</h1>
            <ul>
<?php
    include "config.php";
    $query = 'SELECT id `num`, name FROM groups';
    $rez = mysql_query($query);
    if($rez) {
        $i = 0;
        while($rezult = mysql_fetch_assoc($rez)) {
?>
                <li>
<?php  
    echo('<button onclick="xajax_PrintGroupList('.$rezult["num"].')" >'.$rezult["name"].'</button>');
?>
                </li>
<?php
        }
    }
    else {
        echo('<p><b>Error: '.mysql_error().'</b></p>');
        exit();
    }
?>
            </ul>
        </div>
        <div class="clearing"> </div>
    </div>
    <div id="footer">Footer</div>
</body>
</html>
 

Не слишком ли много я кода отобразил?

Всего записей: 26 | Зарегистр. 14-03-2006 | Отправлено: 12:03 21-03-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ставим $xajax->setFlag('debug', true); и смотрим ошибки

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 22:24 21-03-2007
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Давно не смотрел xAjax, но если я правильно помню, он возвращает XML ответы клиенту. А если в  
<response>
запихнуть код таблицы, структура XML-документа будет нарушена.
</response>
Может попробовать пихнуть текст таблицы в CDATA? Это лишь предположение, нужно юзать отладку.

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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Brodyaga
Не, он что угодно возвращает.

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



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По этому адресу я нашел интересный пример способа вывода таблицы. Исходник соответственно здесь. Но когда я переделал его для xAjax 0.5 как указано в документации - он почему-то перестал работать. Вот его код
Код:
<?php
    #$XAJAX_DIR = "./xajax_0.2.4";
    #require_once("$XAJAX_DIR/xajax.inc.php");
    require('xajax_core/xajax.inc.php');
    $x = new xajax();
    $x->registerFunction("addRow");
    #$x->debugOn();  
    $x->setFlag('debug', true);
    $x->processRequest();
 
    function addRow() {
        $id = rand();
        $resp = new xajaxResponse();
        $resp->create('rsvp_body', 'tr', "row_{$id}");
        for ($col = 1; $col < 4; $col += 1) {
            $resp->create("row_{$id}", 'td', "row_{$id}_td{$col}");
        }
        $resp->assign("row_{$id}_td1", 'innerHTML', "<input type=\"text\" size=\"24\" name=\"name_{$id}\" />");
        $resp->assign("row_{$id}_td2", 'innerHTML', "<input type=\"text\" size=\"18\" name=\"email_{$id}\" />");
        $resp->assign("row_{$id}_td3", 'innerHTML', "<input type=\"radio\" name=\"a_{$id}\" value=\"yes\" />" .  
        "&nbsp;&nbsp;<input type=\"radio\" name=\"a_{$id}\" value=\"no\" checked=\"checked\" />");
        return $resp;
    }  
   
  function rowContent() {
    $id = rand();
    $row =  "<td><input type=\"text\" size=\"24\" name=\"name_$id\" /></td>";
    $row .= "<td><input type=\"text\" size=\"18\" name=\"email_$id\" /></td>";
    $row .= "<td><input type=\"radio\" name=\"a_$id\" value=\"yes\" />";
    $row .= "&nbsp;&nbsp;";
    $row .= "<input type=\"radio\" name=\"a_$id\" value=\"no\" checked=\"checked\" /></td>";
    return $row;
  }
 
  if ($_GET['submit']) {
    $message="";
    foreach ( $_GET as $key => $value ) {
      list($key, $id) = split('_', $key);
      $message = $message . "\n" . $key . ": " . $value;
    }
#    mail('thomas@stromberg.org', 'RSVP Test', $message, "From: rsvp@localhost");  
    echo "Your RSVP has been sent! Thanks!";
    exit;
  }
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>RSVP</title>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <?php $x->printJavascript(); ?>
  </head>
<body>
    <form action="index.php">
        <input type="hidden" name="submit" value="Y" />
        <table id="rsvpTable" cellpadding="6">
            <thead id="rsvp_header">
                <tr>
                    <td>Имя</td>
                    <td>ё-мыло</td>
                    <td>Acceptance<br />Yes | No</td>
                </tr>
            </thead>
            <tbody id="rsvp_body">
                <tr id="row_00">
                    <? echo rowContent(); ?>
                </tr>
            </tbody>
        </table>
        <input type="button" value="Add Person" onclick="xajax_addRow();" />
        <p>Comments for the Bride & Groom:</p>
        <textarea name="comments" rows="8" cols="60"></textarea>
        <br style="clear: both;" />
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

Может кто-нибудь надоумит меня, что я не так сделал.

Всего записей: 26 | Зарегистр. 14-03-2006 | Отправлено: 08:18 26-03-2007
SRangeR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такой вопрос
в тег див вставил форму (естественно при просмотре нтмл-кода она не работает)
как заставить ее передавать параметры через Хаякс
 
и еще вопрос как запихнуть Хаякс в определлную папку например /www/includens/ а вызывать его можно было из папки /www/modules/

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 21:45 07-04-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SRangeR
А документацию не судьба на wiki посмотреть?
xajax.getFormValues('form-name') - массив аналог $_REQUEST.
 

Цитата:
и еще вопрос как запихнуть Хаякс в определлную папку например /www/includens/ а вызывать его можно было из папки /www/modules/

Что-нибудь слышали об относительных и обсолютных путях?

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 23:26 07-04-2007
SRangeR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
поставил бету 2 в папку /includ/xajax/
 
вроде бы правильно подключил главный файл  
 
include_once('../../../includ/xajax/xajax_core/xajax.inc.php');
 
запускаю старые скрипты пишет не найден файл xajax_core.js в папке xajax_js
 
function autoCompressJavascript($sJsFullFilename=NULL, $bAlways=false)
    {    
        $sJsFile = 'xajax_js/xajax_core.js';
 
        
        if ($sJsFullFilename) {
            $realJsFile = $sJsFullFilename;
        }
        else {
            $realPath = realpath(dirname(dirname(__FILE__)));
            $realJsFile = $realPath . '/'. $sJsFile;
        }
 
подскажите какой относительный путь прописать...
 
З.Ы. Кто нить пробовал загружать файлы через xajax, поделитесь опытом  
(тот что есть пример на форум - не могу понять, т.к. инлишом пока не владею)

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 00:51 08-04-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Пишется include.
 
Читать до просветления: http://phpfaq.ru/paths
 

Цитата:
.Ы. Кто нить пробовал загружать файлы через xajax, поделитесь опытом  

Реализовывал и очень удачно с индикатором загрузки. translate.ru поможет самым плохим школьникам

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 01:09 08-04-2007
SRangeR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну а так слабо сказать ???
Все твои копирайты в своем двиге пропишу )))

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 13:12 08-04-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Что сказать?
Как прописывать пути? Почитай, это полезно, точнее без этого никак.
Загрузка файлов? По ссылке _http://trydobe.com/?page_id=3
 
Тут форум общения программистов, поэтому такие примитивные вещи как прописывание путей думаю разжевывать никто не будет, если влом прочитать полстраницы текста самому ученику.

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
забыл сказать с путями то разобрался )))
 
Жаль но мой движок не предполагает использования перла. придется что нить самому придумать )

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 13:26 08-04-2007 | Исправлено: SRangeR, 13:48 08-04-2007
SRangeR

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

Код:
function newCat($formData)
{
    if(!db_connect()) die("DB Error.");
        
    $objResponse = new xajaxResponse();
    
    $formData['cat_title'] = iconv('UTF-8','windows-1251',$formData['cat_title']);
    $formData['cat_description'] = iconv('UTF-8','windows-1251',$formData['cat_description']);
    $formData['cat_key'] = iconv('UTF-8','windows-1251',$formData['cat_key']);
    $formData['cat_title'] = ereg_replace("[^A-Za-z0-9 А-Яа-я]", "", $formData['cat_title']);
    $formData['cat_title_alt'] = ereg_replace("[^A-Za-z0-9_]", "", $formData['cat_title_alt']);
    $formData['cat_description'] = ereg_replace("[^A-Za-z0-9 А-Яа-я]", "", $formData['cat_description']);
    $formData['cat_key'] = ereg_replace("[^A-Za-z0-9 А-Яа-я]", "", $formData['cat_key']);
    $formData['cat_parent_id'] = ereg_replace("[^0-9]", "", $formData['cat_parent_id']);
 
    if(@mysql_query("insert into news_cat ( `news_cat_id` , `news_cat_title` , `news_cat_title_alt` , `news_cat_description` , `news_cat_key` , `news_cat_news_counter` , `news_cat_parent_id`) values ('', '".$formData['cat_title']."', '".$formData['cat_title_alt']."', '".$formData['cat_description']."', '".$formData['cat_key']."', '0' ,'".$formData['cat_parent_id']."')" limit 1))
    {
    list($mes0) = newcat();
        list($mes) = viewcat();
    }
    else $message="Произошла ошибка при записи новости в базу данных";
    
 

 
Странно но запрос составлен правильно а не выполняется...
 
Если убрать limit 1 то работает
 
Но при этом елси через функцию list($mes0) = newcat(); передать хтмл код то вставляется около 100 пустых записей
 
Это что глюк 0,5 бетки или я что неправильно написал?

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 19:53 08-04-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Какое это имеет отношение к аяксу?
 
В догонку: знаете зачем нужен pramary key?

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 20:26 08-04-2007
SRangeR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хотел загрзить файл через аякс...
 

Код:
 
Загрузить файл <input type="file" name="files_upload" size="50">
 
 
if (copy($formData['files_url']["tmp_name"], "../../../../temp/".$formData['files_url']["files_upload"])) $report="Complete";//57 строчка
 

 
что я тут не правильно делаю?
 
Warning: copy(h): failed to open stream: No such file or directory in Z:\home\4.ru\www\admin\moduls\files\ajax.php on line 57
 
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\4.ru\www\admin\moduls\files\ajax.php:57) in Z:\home\4.ru\www\include\xajax\xajax_core\plugin_layer\xajaxDefaultRequestProcessorPlugin.inc.php on line 217
 
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\4.ru\www\admin\moduls\files\ajax.php:57) in Z:\home\4.ru\www\include\xajax\xajax_core\xajaxResponse.inc.php on line 661
Error copy file

Всего записей: 37 | Зарегистр. 07-04-2007 | Отправлено: 00:19 12-04-2007 | Исправлено: SRangeR, 00:20 12-04-2007
Cheery



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

Цитата:
что я тут не правильно делаю?
 

важным является сообщение

Цитата:
Warning: copy(h): failed to open stream: No such file or directory in Z:\home\4.ru\www\admin\moduls\files\ajax.php on line 57

все остальное - его следствия..
и так.. перевод нужен? коротко..  

Цитата:
$formData['files_url']["tmp_name"]

пустое значение.. файлы через ajax не передаются таким образом.. там более сложная вещь.
файлы, обычно, передаются через iframe
 


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

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



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 
function upoad_file()
{
 
код копирования твоего файла!  
переменные
Цитата:
formData['files_url']["tmp_name"]  

здесь уже доступны.....
 
 
}
 
 $xajax->registerFunction("'upload_file'");
 
 
 
  $xajax->processRequests();
?>
<html>
<head>
..........
 
<?php $xajax->printJavascript(XAJA_DIR); ?>
 
<script language="Javascript">
function checkUploadForm() {
   
 
   
   xajax.upload('upload_file',upload_file_form);
 
   return true;
 
  }
</script>
</head>
<body>
<form action = "<?=$SERVER['PHP_SELF'];?>"  id="upload_file_form" method="post" onSubmit="return  checkUploadForm();">
 
    <input name="userfile" size="50" type="file"  id="userfile">
   <input type="submit" value = "Загрузить файл"    >
</form>
</body>
</html>
 
Мог где то ошибится..... но по такому алгоритму сам писал - все получилось......
Ах да забыл учесть ХАЯКС должен быть 0.2.4

Всего записей: 3 | Зарегистр. 08-04-2007 | Отправлено: 11:13 12-04-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