javascript中创建对象,并序列化为json,通过$.ajax的提交json数据到后台方法,取值为null的问题

使用mvc开发页面,在view中需要提交数据到后台。使用的办法是在javascript中建立一个和参数类相同的类,在javascript赋值,然后序列化为json,通过$.ajax的提交json数据到后台。实际编程中发现参数取值一直为null。

view中的代码:

 1 $('#linkSave').click(function () {
 2                     var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
 3                     var nodes = treeObj.getCheckedNodes(true);
 4                     var datas = [];
 5                     $.each(nodes, function (k, v) {
 6                         datas.push(v.tid);
 7                     });
 8 
 9                     var tdata = {
10                         "RowPrivilegeRelatedData": {
11                             "RowPrivilegeID": $("#RowPrivilegeID").val(),
12                             "RelatedIDs": datas
13                         }
14                     }
15 
16                     $.ajax({
17                         type: "POST",
18                         url: '@Url.Action("SaveRowPrivilegeByDeptRelatedData", "RowPrivilege")',
19                         dataType: 'json',
20                         contentType: 'application/json; charset=utf-8',
21                         data: JSON.stringify(tdata),
22                         success: function (msg) {
23                             if (msg.errmsg == "") {
24                                 $.messager.alert("处理结果", "设置成功!", "Info", function () { window.location.reload(); });
25                             }
26                             else {
27                                 $.messager.alert("处理结果", msg.errmsg, "error");
28                             }
29                         }
30                     });
31                 });

 controller中的代码:

 1         public ActionResult SaveRowPrivilegeByDeptRelatedData(RowPrivilegeRelatedData data)
 2         {
 3             string errorMsg = string.Empty;
 4             try
 5             {
 6                 new RowPrivilegeHelper().SaveRowPrivilegeRelatedData(data.RowPrivilegeID, "erp_organization_rowprivilege", data.RelatedIDs);
 7             }
 8             catch (Exception ex)
 9             {
10                 errorMsg = ex.Message;
11             }
12             return Json(new { errmsg = errorMsg });
13         }

 后来发现,如果参数名命名为rowPrivilegeRelatedData,即可获得前台传过来的数据。

猜测可能是要求参数名需要和前台拼成的json串中的类名相同(可以忽略大小写)才能传值成功。

原文地址:https://www.cnblogs.com/thomaswang/p/2469999.html