我正在学习ASP.NET MVC。在客户端(在jquery中)验证后,我必须向控制器端提交一个。如何做到这一点?我是否应该使用<form action="#" method="post">而不是<form action="Controller/Method" method="post">,并在提交按钮的单击事件中添加事件处理程序,以通过ajax等方式发送?我该怎么办?请帮帮忙
发布于 2013-04-07 14:54:28
你在正确的轨道上,你所建议的将会起作用。
一种更好的方法是保持原始操作不变,为旧浏览器提供向后兼容性。然后,您可以像往常一样创建事件处理程序,并包含阻止默认提交行为的代码,并使用ajax。
$('#submitbutton').live('click', function(e){ e.preventDefault(); });发布于 2013-04-07 14:56:12
执行此操作的最简单方法是使用jQuery forms plugin.
这是我对这类事情的首选插件。基本上,它将接受您现有的表单,动作url等,并自动将提交转换为ajax调用。来自网站:
AJAX表单插件允许您轻松而低调地升级
表单以使用AJAX。主要方法ajaxForm和ajaxSubmit从表单元素收集信息,以确定如何管理提交过程。这两种方法都支持许多选项,使您可以完全控制数据的提交方式。这是非常有用的网站托管在低成本的网站托管有限的特点和功能。用AJAX提交表单再简单不过了!
如果由于某种原因,禁用了javascript,那么它也会优雅地降级。看看这个网站,有一堆清晰的例子和演示。
发布于 2013-04-07 14:56:37
我是这样做的:
在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();
})https://stackoverflow.com/questions/15859748
复制相似问题