2011-06-27 52 views
1

我有页面的链接,我想使用后,而不是默认的重定向,因为我需要从窗体传递一些其他值。我设置的jQuery后的onclick这样的:ASP.NET MVC发布与href

<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 
    }); 
}); 

但它不是完全覆盖A HREF行为,因为第一次发生了什么是职务行为,这样是很好的,但后来越来越形成再次提交。

我的javascript不会完全覆盖href行为。

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

回答

1

到AJAXify链接正确的方法是:

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

几件事情要验证:

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

@Darin季米特洛夫我设置点击里面的文件准备(更新),但如果我把回报假;链接停止工作 –

+0

@Vasya Pupkin,我在回答中强调的其他问题呢?最重要的是你在FireBug中看到了什么? –

+0

@Vasya Pupkin,你看到AJAX请求/响应了吗?查看网络选项卡中的XHR。 –

0

return false;对于防止$.post()调用后的链接非常重要。

+0

是的,我知道,但在我的情况下,链接只是不工作,如果我把返回false; –

+1

当你AJAX化它时,该链接应该不会贯穿。这是使用该POST的完整点。如果你在POST之后需要将页面发送到其他地方,那么这是一个完全不同的问题。 – jerluc

0

如果您想要发布到另一个URL,并将该页面作为该帖子的一部分转到该URL,那么唯一的解决方案是将您的数据放入一个表单内的输入元素,其行为就是您希望的页面张贴到。

你可以像做你一样做ajax帖子,但是不会将用户重定向到包含发布数据的页面。你很可能会比这要困难得多。

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(); 
    }); 
});