Как я могу получить доступ к URL с помощью AJAX, не получать ответа, а просто манипулировать HTML? - PullRequest
0 голосов
/ 11 июня 2010

Я не знаю, лучше ли это использовать с AJAX (скажите, в противном случае), но вот моя проблема:

Предполагая, что я использую Zend Framework , у меня есть таблица с несколькими регистрами из базы данных с кнопкой удаления в каждой строке. Вот так

[...]
        <tbody>
            <?php foreach ($row as $reg) { ?>
                <tr <?php if ($reg['value'] < 0) { echo "class='error'"; } ?>>
                    <td><?php echo $reg['creditor'] ?></td>
                    <td><?php echo $reg['debtor'] ?></td>
                    <td><?php echo $reg['reason'] ?></td>
                    <td>R$ <?php echo number_format(abs($reg['value']), 2, ',', ' ')?></td>
            <td><a href="#" id="<?php echo $reg['id']; ?>" class="delete"><img src="http://192.168.0.102/libraries/css/blueprint/plugins/buttons/icons/cross.png" alt=""/></a></td>
                </tr>
            <?php } ?>
        </tbody>

[...]

Я бы хотел .fadeOut() и удалить (по ссылке history / delete / id / ROW_ID ) строку таблицы при нажатии на соответствующую кнопку удаления.

My deleteAction () не имеет визуализации. Он действительно не должен иметь его, он просто удаляет строку в базе данных. Тем не менее, как я могу это сделать?

Я пытался:

// TR Fading when deleted
$('.delete')
    .click(function() {
    $.ajax({
        type: 'GET',
        url: 'history/delete/id/'+$(this).attr('id'),
        success: function() {
        $(this).parent().parent().fadeOut();
        }
    });
    return false;
    });

без успеха

1 Ответ

1 голос
/ 11 июня 2010

Ссылка this не ссылается на то, что вы хотите (элемент .delete, который вы щелкнули) в этой функции success (она запускается как обратный вызов позже), но вы можете исправить это, используя $.proxy(), вот так:

$('.delete').click(function() {
  $.ajax({
    type: 'GET',
    url: 'history/delete/id/'+$(this).attr('id'),
    success: $.proxy(function() {
               $(this).closest('tr').fadeOut();
             }, this)
  });
  return false;
});

.closest('tr') - это просто более короткий способ получения родителя <tr>, бит прокси - это фактическое исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...