我已经看到了几种关于如何做到这一点的方法。除了一部分之外,我喜欢的自己的方法如下:
收集数据并构建json
对象
var objToSend = { Property : $('#propertyField').val(), Property2 : ... };
这是我不喜欢的部分,因为收集这样的25个值是很乏味的
致电$.ajax({})
并指定网址指向某处[HttpPost]
已启用的操作
除了收集阶段,我喜欢这种方法。我确信有一种更好的方法可以做到这一点,但是我从jquery
WebForms背景中悄悄地投入ASP.NET
,所以整个“拥抱网络”部分对我来说是完全陌生的。
答案 0 :(得分:6)
您可以使用serialize()
方法来避免逐个传递所有字段。它会使用application/x-www-form-urlencoded
内容类型将整个表单数据发送到服务器,就好像它是标准表单提交一样:
$('#myform').submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
// TODO: handle the success case
}
});
return false;
});
另一种可能性是jQuery form plugin:
$('#myform').ajaxForm(function(result) {
// TODO: handle the success case
});
有些人发现使用Ajax.BeginForm
帮助器呈现表单也很有用:
@using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
{
... some input fields
}
在ASP.NET MVC 3中,您需要包含jquery.unobtrusive-ajax.js
脚本,该脚本不显眼地AJAX化Ajax助手发出的HTML 5 data-*
属性。
答案 1 :(得分:3)
允许jQuery为你构建你的json。您可以序列化一个表单,该表单将创建一个供您提交的数据集。
$.post("myUrl",
$("form").serialize(),
function(callback) { ... }
);
答案 2 :(得分:1)
我就是这样做的!
如果您正在处理某个表单,您还可以选择使用MVC帮助程序为您创建邮政编码处理代码。
<% using (html.BeginForm()) {%>
// html for the form
<input type='submit' value='post' />
<% } %>
从WebForms到MVC的过渡对于人们来说可能是一个棘手的问题,你真的正在处理网络编程的原始方面,即http,html和javascript ......顺便说一下,我认为这是一件好事,因为我是不是WebForms的伪单进程事件模型的粉丝。
MVC万岁! :)
答案 3 :(得分:1)
我倾向于使用“jQuery表单插件”。它允许您轻松地将标准表单简洁地抽象为AJAX表单:
http://jquery.malsup.com/form/
它还允许您轻松捕获各种事件,故障条件,验证等,并可根据需要将表单转换为JSON请求或XML。处理文件上传。