带有href的ASP.NET MVC Post

时间:2011-06-27 07:17:38

标签: jquery asp.net-mvc-3 post

我有链接的寻呼机,我想使用post而不是默认重定向,因为我需要从表单传递一些其他值。我设置jquery post onclick就像那样:

<script type="text/javascript">
    $(document).ready(function () {
    $("#mytable tfoot a").click(function() {
                  $.post($(this).attr("href"), $("form").serialize());
                  //return false; if i set that the page does not getting updated
    });
 });

但它并没有完全覆盖href行为,因为首先发生的是事后行动,这样做很好,但随后形式再次提交。

我的javascript并没有完全覆盖href行为。

可能有人对此有任何想法吗?

4 个答案:

答案 0 :(得分:1)

AJAX化链接的正确方法如下:

$(function() {
    $('#mytable tfoot a').click(function() {
        $.post(this.href, $('form').serialize(), function(result) {
            alert('success');
        });
        return false;
    });
});

要验证的事情很少:

  • 您正在.click内附加$(document).ready处理程序,如我的代码段所示。
  • 您要从false处理程序返回.click以取消默认操作。
  • 锚点的href指向现有的控制器操作。
  • 调用操作时不会抛出异常。
  • 使用FireBug分析是否发送了AJAX请求以及服务器响应了什么。这将允许您查看可能引发的任何潜在错误消息。

答案 1 :(得分:1)

你觉得它不起作用的原因是因为你没有做你认为自己在做的事情。

$.post方法不发布表单,它在后台进行AJAX调用。您可以在响应到达时调用的调用中提供回调方法,但由于您没有回调方法,因此您只需忽略响应,因此似乎没有任何反应。

如果您要发布表单,则不应使用$.post方法,而应使用submit方法发送表单:

$(document).ready(function () {
  $("#mytable tfoot a").click(function(e) {
    e.preventDefault(); // keeps the link from being activated
    var form = $("form");
    form.attr('action', $(this).attr("href"));
    form.attr('method', 'post');
    form.submit();
  });
});

答案 2 :(得分:0)

return false;对于阻止$.post()来电后跟踪链接至关重要。

答案 3 :(得分:0)

如果您想发布到另一个网址,并让网页作为帖子的一部分转到该网址,那么唯一的解决方案是将您的数据放在表单内的输入元素中,该表单的操作就是您希望的页面发布到。

您可以执行ajax帖子,就像您正在执行的那样,但不会将用户重定向到包含帖子数据的该页面。你可能会比现在更加困难。