【问题标题】:Submitting Form with Jquery submitting Get instead Post使用 Jquery 提交表单提交 Get 代替 Post
【发布时间】:2012-11-29 14:56:42
【问题描述】:

我在我的 MVC 应用程序中使用 WebGrid,我正在使用此代码进行分页

  var links = $('a[href*=page], a[href*=sort]');
        form = $('form')[0];
        links.click(function () {
            debugger;
            form.attr("action", this.href);
            $(this).attr("href", "javascript:");
            form.submit();
        });

@using (Html.BeginForm(Model.PostToAction, "Leads", FormMethod.Post))

当 form.submit() 被执行时,它被执行为 GET 而不是 POST ,

我做错了什么?

更新:

我的表格是:

<form action="/Leads/DetailsLeads" method="post">

控制器是:

 [HttpPost]
        public ActionResult DetailsLeads(LeadDetailsViewModel model)

【问题讨论】:

  • 你可以试试这个:form.attr("method","post");
  • 您是否阅读了呈现的 HTML 以确认它是作为“发布”表单方法创建的?你能粘贴控制器声明吗?另外,我很清楚,您是否将操作 URL 更改为相应单击的链接的 href?
  • 尝试在您的 links.click(function(){} 块中添加 e.preventDefault()。浏览器可能仍在尝试跟踪您单击的链接(GET 请求)
  • @Tommy:您应该将其作为可行的答案提交。
  • @JoelEtherton - 谢谢,我做到了。当我第一次遇到这个时我很着急(实际上是在寻找我正在做的事情的答案)!

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


【解决方案1】:

尝试在 links.click(function(){} 块内添加 e.preventDefault()。如果没有这个,浏览器仍然会尝试执行您指示它执行的操作(点击链接上的 GET 请求)。

var links = $('a[href*=page], a[href*=sort]');
        form = $('form')[0];
        links.click(function (e) {
            e.preventDefault();
            debugger;
            form.attr("action", this.href);
            $(this).attr("href", "javascript:");
            form.submit();
        });

【讨论】:

  • 我整个早上都在与这个错误作斗争,哈哈。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2010-10-10
  • 2011-02-20
  • 2011-07-18
相关资源
最近更新 更多