0

我正在学习 ASP.NET MVC。在客户端(在 jquery 中)验证后,我必须向控制器端提交一个。如何做到这一点?我应该使用<form action="#" method="post">而不是<form action="Controller/Method" method="post">在提交按钮的单击事件中添加事件处理程序,以通过 ajax 等发送吗?我应该怎么办?请帮忙

4

3 回答 3

2

你走在正确的轨道上,你的建议会奏效。

更好的方法是保持原始操作不变,为旧浏览器提供向后兼容性。然后,您将照常创建事件处理程序,并包含代码以防止默认提交行为,并改用 ajax。

$('#submitbutton').live('click', function(e){ e.preventDefault(); });
于 2013-04-07T06:54:27.670 回答
2

最简单的方法是使用jQuery 表单插件。

这是我这类事情的首选插件。基本上它将采用您现有的表单、操作 url 等并将提交自动转换为 ajax 调用。从网站:

jQuery 表单插件允许您轻松且不显眼地升级 HTML 表单以使用 AJAX。主要方法 ajaxForm 和 ajaxSubmit 从表单元素收集信息以确定如何管理提交过程。这两种方法都支持许多选项,使您可以完全控制数据的提交方式。它对于在特性和功能有限的低成本网络托管服务提供商中托管的网站非常有用。使用 AJAX 提交表单没有比这更容易的了!

如果由于某种原因禁用了 javascript,它也会优雅地降级。看看网站,有一堆清晰的例子和演示。

于 2013-04-07T06:56:12.397 回答
2

这就是我的做法:

在 jQuery 中:

$('document').ready(function() {
    $('input[name=submit]').click(function(e) {
        url = 'the link';
        var dataToBeSent = $("form#myForm").serialize();
        $.ajax({
            url : url,
            data : dataToBeSent,
            success : function(response) {
                alert('Success');
            },
            error : function(request, textStatus, errorThrown) {
                alert('Something bad happened');
            }
        });
        e.preventDefault();
    });

在另一页中,我获取变量并处理它们。我的表格是

<form name = "myForm" method = "post">//AJAX does the calling part so action is not needed.
    <input type = "text" name = "fname"/>
    <input type= "submit" name = "submit"/>
<FORM>

在操作页面中有这样的东西

name = Request.QueryString("fname")

更新:作为您在 David 帖子中的评论之一,您不确定如何发送表单的值。试试下面的函数,你会清楚地知道这段代码是如何工作的。serialize()方法可以解决问题。

$('input[name=submit]').click(function(e){
    var dataToBeSent = $("form#myForm").serialize();
    alert(dataToBeSent);
    e.preventDefault();
})
于 2013-04-07T06:56:36.997 回答