免责声明:对于 ASP.NET,我完全是菜鸟。
我使用以下 jQuery 代码来提交我的表单:
$.ajax({
url: '/Foo/Save',
type: 'POST',
data: $('#dataInputForm').serialize(),
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data.success);
},
error: function () {
alert("error");
}
});
我的 Foo
Controller 代码是这样的:
[HttpPost]
public ActionResult Save()
{
return Json(new { success = true });
}
我知道 AJAX 帖子正在运行,因为我看到了“成功”的警报。接下来,我想以某种方式查看我的序列化形式的 var 转储。老实说,我不知道在 Controller 端从哪里开始,但我希望我的成功警报只是转储我的序列化表单数据,以便我可以确认已提交的表单数据。
本质上,这就是我希望成功警报的样子:
a=1&b=2&c=3&d=4&e=5
奖励:我希望看到一种以 JSON 格式提交数据并以 JSON 格式查看成功警报的替代方法。
最佳答案
首先,.serialize() 不会生成 json,因此指定的 contentType 是错误的。您可以删除 contentType 选项,$.ajax() 将使用默认的“application/x-www-form-urlencoded”。
接下来,在 Controller 上,您需要将发布的数据绑定(bind)到某个对象。如果您没有定义对表单数据进行建模的对象,则可以使用 FormCollection 来构建结果:
[HttpPost]
public ActionResult Save(FormCollection collection)
{
var result = new {Foo1 = collection["Foo1"], Foo2 = collection["Foo2"]};
return Json(result);
}
在成功处理程序中,您可以显示属性:
success: function(data) {
alert(data.Foo1);
alert(data.Foo2);
}
或者使用 this 将对象转换为 json 字符串像这样的实用程序:
success: function(data) {
alert(JSON.stringify(data));
}
进一步引用:
关于jquery - 如何在 ASP.NET MVC3 中简单地将序列化表单作为 AJAX 表单中的数据输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492748/