我有一些JQuery使用Ajax将信息发送回我的控制器进行处理
我这样做:
//Define my controls
<%=Html.TextBox("PName", Model.PName, new { id = "pName" })%> ...
....
....
//Get the values from my controls
var param1= $("#pName").val();
....
....
//Define the return URL. Is this how to send info back?
var url = '<%= Url.Content("~/Port/SaveRowAjax") %>/?ID=' + id
+ "¶m1=" + param1
+ "¶m2=" + param2
+ "¶m3=" + param3
+ "¶m4=" + param4
+ "¶m5=" + param5;
$.ajax({
url: url,
success: function(html) {
alert("Success!");
},
});
//My c# code, that processes the request
public void SaveRowAjax(string param1 ....)
{
...
}
这是使用MVC进行此操作的最佳方式吗? 当我构建回发到服务器的URL
时,似乎有点乱答案 0 :(得分:4)
尝试使用SerializeArray提交表单项。它会将所有值都装入JSON对象。
var link = "/Port/SaveRowAjax";
var formData = $(":input").serializeArray();
$.post(link,formData);
答案 1 :(得分:2)
您可以尝试在jQuery中使用此类语法
$.post(link, {param1: param1, param2: param2 });
答案 2 :(得分:1)
对我有用的方法是:
jQuery.ajax({
url: '@Url.Action("SaveRowAjax", "Port")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }),
success: function (result) { }
});
答案 3 :(得分:0)
有几种方法可以做到这一点。我更喜欢这里概述的方法:
是的,它基于较旧版本的MVC,但该技术真正的优点是使用jQuery(没有改变)。
该技术的一个限制是它不能用于文件上传,但是,有一个jQuery插件用于执行支持文件上传的ajax表单帖子(我想通过隐藏的iframe)。
编辑: 我认为使用此技术的最佳理由是,如果用户禁用了javascript,表单仍然有效。