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