如何使用AJAX访问URL,不接收响应,只是操纵HTML?

时间:2010-06-10 22:20:53

标签: jquery ajax javascript

我不知道它是否更适合与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 )在相应的删除按钮中单击表格行

我的 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 个答案:

答案 0 :(得分:1)

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>的一种较短方式,代理位是实际修复。