gpt4 book ai didi

cakephp - 使用 jQuery 拦截 cake2 postLink() 表单帖子

转载 作者:行者123 更新时间:2023-12-04 17:11:50 25 4
gpt4 key购买 nike

有没有人找到一种方法来拦截默认的 Form::postLink() 表单与 Jquery?
我希望表单在没有 JS 的情况下工作(因此是 postLink)。
但是启用 JS 后,我想拦截帖子并通过 AJAX 调用它。

<?php echo $this->Form->postLink('Delete', array('action'=>'delete', $prospect['Prospect']['id']), array('class'=>'postLink', 'escape'=>false), __('Sure you want to delete # %s?', $prospect['Prospect']['id'])); ?>

产生:
<form action="/admin/prospects/delete/4f61ce95-2b6c-4009-9b89-07e852b0caef" name="post_4f648f773923b" id="post_4f648f773923b" style="display:none;" method="post">
<input type="hidden" name="_method" value="POST"/>
</form>
<a href="#" class="postLink" onclick="if (confirm('Sure you want to delete # 4f61ce95-2b6c-4009-9b89-07e852b0caef?')) { document.post_4f648f773923b.submit(); } event.returnValue = false; return false;">
Delete
</a>

主要问题是 js 被内联放置在这里。因此,即使我尝试拦截点击事件(或 post 事件 - 也尝试过),也总是会触发:
<script>
$(document).ready(function() {
$('table.list a.postLink').click(function(e) {
e.preventDefault();
alert('Handler for .submit() called.');
// TODO: do ajax request here and return false
return false;
});
});
</script>

所以最终表单总是正常提交​​并重定向 - 要么忽略任何 ajax 调用(捕获表单提交),要么不管刚刚进行的 ajax 调用(捕获点击事件)发布/重定向。

我想通过 AJAX 删除此记录,如果成功,只需从 DOM 中删除该表行。不过,如果不必为它修改应用程序中的所有 300 多个“删除按钮”,那就太好了。

如果一切都失败了,我可能仍然可以覆盖 FormHelper(对其进行扩展和别名)。但我希望这里有一个侵入性较小的解决方案。

最佳答案

我知道这很旧,但对于那些搜索的人来说:

  • 需要先把delete中添加的'onclick'属性去掉
    关联。
  • 然后,您将 .click 函数添加到删除链接
  • 您需要 url(可以硬编码或从表单中检索,它始终是 cakephp Form->postLink
  • 中的 prev 元素)

    这是代码:

    $(function(){

    $('a:contains("Delete")').removeAttr('onclick');

    $('a:contains("Delete")').click(function(e){
    e.preventDefault();
    var form = $(this).prev();
    url = $(form).attr("action");
    $.post(url);
    return false;
    });

    });

    关于cakephp - 使用 jQuery 拦截 cake2 postLink() 表单帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750326/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com