在jquery中将表单发送到服务器

时间:2013-04-07 06:51:42

标签: ajax asp.net-mvc jquery

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

3 个答案:

答案 0 :(得分:2)

你走在正确的轨道上,你的建议将起作用。

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

$('#submitbutton').live('click', function(e){ e.preventDefault(); });

答案 1 :(得分:2)

最简单的方法是使用jQuery forms plugin.

这是我这类东西的首选插件。基本上它将采用您现有的表单,操作URL等,并自动将提交转换为ajax调用。来自网站:

  

jQuery Form Plugin允许您轻松且不引人注意地升级   HTML表单使用AJAX。主要方法,ajaxForm和ajaxSubmit,   从表单元素收集信息以确定如何管理   提交过程。这两种方法都支持多种选择   这使您可以完全控制数据的提交方式。   它对于以低成本虚拟主机托管的站点非常有用   具有有限特性和功能的提供商。提交表格   使用AJAX并不比这更容易!

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

答案 2 :(得分: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();
})