1

Тема: Ajax

На странице есть ссылка (кнопка), нажав на которую под этой ссылкой (кнопкой) появляются значения всех полей какого-нибудь объекта из БД. Как это реальзовать при помощи Ajax???
Попробовал вот так:

 
<?php use_helper('Javascript') ?>

  . . . . . . . . . . . . . .

    <?php echo link_to_remote('Show', array(
        'update' => 'element',
        'url'    => 'mymodule/index?id='.$element->getId(),
    )) ?>
<div id="element"></div>

--- не работает, но и ошибок нет!

2

Re: Ajax

indexSuccess.php должен формировать кусок хтмл который добавляется в елемент, он у вас формируется?
если да, то должно все работать

а если все так и не работает, то давайте сюда код обрабатывающего екшена и темплейта

3

Re: Ajax

Вобщем вот коды (есть некоторые изменения):

layout.php:

<?php use_helper('Javascript') ?>
....................................
<?php echo link_to_remote('Show', array(
        'update' => 'element',
        'url'    => 'designerdress/show?id=1',
    )) ?>
    
<div id="element"></div>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/designerdress/actions/actions.class.php:

............................
  public function executeShow(sfWebRequest $request)
  {
    $this->designer_dress = DesignerDressPeer::retrieveByPk($request->getParameter('id'));
    $this->forward404Unless($this->designer_dress);
  }
............................

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/designerdress/templates/showSuccess.php:

<table>
  <tbody>
    <tr>
      <th>Id:</th>
      <td><?php echo $designer_dress->getId() ?></td>
    </tr>
    <tr>
      <th>Name:</th>
      <td><?php echo $designer_dress->getName() ?></td>
    </tr>
  </tbody>
</table>

<hr />

<a href="<?php echo url_for('designerdress/edit?id='.$designer_dress->getId()) ?>">Edit</a>
&nbsp;
<a href="<?php echo url_for('designerdress/index') ?>">List</a>

Отредактировано Lexer (2010-03-10 05:55:55)

4

Re: Ajax

Поставь Firebug - очень помогает в отладке ajax.
А то может у тебя тупо prototype не загружается.

Если что-то не работает - очисти кэш.

5

Re: Ajax

У меня Opera.

6

Re: Ajax

так поставь фаерфокс и фаербаг default/smile

7

Re: Ajax

Поставил FireFox и Firebug default/smile

Для такого случая:

<?php use_helper('Javascript') ?>
    <div id="test"></div>
    <?php echo link_to_remote('Test ajax', array(
        'update' => 'test',
        'url'    => 'dress/show?id=1',
    )) ?>

вот что в firebug видно:

<a onclick="new Ajax.Updater('test', '/index.php/dress/show/id/1', {asynchronous:true, evalScripts:false});; return false;" href="#">Test ajax</a>

В итоге --- не работает. Что я делаю не правильно???

8

Re: Ajax

консоль включили?
какие ошибки жаваскрипта показывает?

вряд-ли поможет, но попробуйте:

<?php use_helper('Javascript') ?>
    <div id="test"></div>
    <?php echo link_to_remote('Test ajax', array(
        'update' => 'test',
        'url'    => url_for('dress/show?id=1'),
    )) ?>

9

Re: Ajax

Не помогло url_for(' . . . ')

Консоль включил. Вот что пишет при нажатии на Test ajax:

Ajax is not defined
Это как так? Что за фигня? default/sad default/hmm

Отредактировано Lexer (2010-03-17 22:25:08)

10

Re: Ajax

http://forum.symfony-project.org/index.php/m/65404/

11

Re: Ajax

Вобщем я сделал так:

httpd.conf:

  
 . . .
Alias /sf "E:\Xampp\htdocs\deluxe\www\deluxe\web\sf"
  <Directory "E:\Xampp\htdocs\deluxe\www\deluxe\web\sf">
    AllowOverride All
    Allow from All
  </Directory>
 . . .

В папку E:\Xampp\htdocs\deluxe\www\deluxe\web\sf скопировал E:\Xampp\htdocs\deluxe\www\deluxe\lib\vendor\symfony\data\web\sf\. А также создал папку E:\Xampp\htdocs\deluxe\www\deluxe\web\sf\prototype\js\ в которой и лежат *.js, в том числе и prototype.js. Теперь по адресу http://deluxe/sf/prototype/js/prototype.js видно файл prototype.js, но вот firebug все равно пишет Ajax is not defined. Где косяк?

12

Re: Ajax

ну ты проверь-то какие js файлы подключаются на странице и существую ли они по этим адресам.

Если что-то не работает - очисти кэш.

13

Re: Ajax

А где тут подключаются js файлы и где их посмотреть?

<?php use_helper('Javascript') ?>
    <div id="test"></div>
    <?php echo link_to_remote('Test ajax', array(
        'update' => 'test',
        'url'    => 'dress/show?id=1',
    )) ?>

14

Re: Ajax

<?php use_helper('Javascript') ?>
вот так подключается прото, проверь в коде страницы пути к жс-файлам в хеаде

15

Re: Ajax

Вот так подключается в head:

... src=/sfProtoculousPlugin/js/prototype.js

А этот путь относительно чего вообще??

Отредактировано Lexer (2010-03-18 19:06:23)

16

Re: Ajax

Проблему решил так:

cp -R site/lib/vendor/symfony/plugins/sfProtoculousPlugin/web/js site/web

И все заработало!!! Спасибо за подсказки default/smile

17

Re: Ajax

ну понятно
надо было сделать:

symfony plugin:publish-assets

18

Re: Ajax

А что команда делает??

symfony plugin:publish-assets

19

Re: Ajax

винда: кидает файлы плагинов в веб папку
линукс: создает там симлинки

20

Re: Ajax

Спасибо, понятно. Вот почему-то об этом ничего не написано в документации (...\lib\vendor\symfony\doc\11-Ajax-Integration). default/neutral

Отредактировано Lexer (2010-03-19 10:16:54)

21

Re: Ajax

собственно о чём я и говорил

ну ты проверь-то какие js файлы подключаются на странице и существую ли они по этим адресам

Если что-то не работает - очисти кэш.