从$ .post传递数组到Action
我无法通过$ .post传递我的数组。
Javascript
var privIDs = [1,2,4,5]; $.post("/Home/GrantPrivilegesToUser", { privilegeIDs: privIDs }, function (data) { alert("Data Loaded: " + data.success); });
那个行动
public ActionResult GrantPrivilegesToUser(int[] privilegeIDs) { return Json(new {success=true}); }
该操作将privilegeID视为null。 有任何想法吗?
你需要设置jQuery.ajaxSettings.traditional = true;
为你jQuery ajax设置。 在jQuery 1.4中,他们改变了在表单post中序列化项目的方式。
请参阅:
http://forum.jquery.com/topic/nested-param-serialization
而且: 如何在没有表单的情况下将一个字符串数组发布到ASP.NET MVC Controller?
我使用JSON使用JSON2库将数据作为字符串传递: http : //www.json.org/js.html
var privIDs = [1,2,3,4,5]; var data = JSON.stringify({privilegeIDs : privIDs}); $.POST("/Home/GrantPrivilegesToUser", data, function (data) { alert("Data Loaded: " + data.success); });
该操作将使用WebMethod类型:
[WebMethod] public object Entry_GetFormOptions(string privilegeIDs) { return new {success=true}; }
内置和第三方函数用于解析收到的JSON以访问权限ID。
如果这有或没有帮助,请告诉我。
这就是我最终做的事情。 可能对某人有帮助……
var privIDs = [1,2,4,5]; $.ajax({ type: "POST", url: "/Home/UpdatePrivileges", data: { privilegeIDs: privIDs }, traditional: true, success: function (json) { alert(json.success); } });
如果使用.ajax而不是.post,则可以包含traditional: true