zoukankan      html  css  js  c++  java
  • 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串中的类名相同(可以忽略大小写)才能传值成功。

  • 相关阅读:
    Oracle 定时查询数据插入新表中(job+存储过程)
    serialVersionUID的作用
    如何解决"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path"
    如何解决maven archetype加载太慢的方法
    Java中NIO、BIO、AIO相关概念及应用场景
    Sql多条件排序
    Oracle学习笔记—Oracle左连接、右连接、全外连接以及(+)号用法(转载)
    Oracle学习笔记—oracle体系架构及状态(nomount、mount和open)简介
    Oracle学习笔记—归档模式
    Oracle学习笔记—Db_name、Db_domain、Global_name、Service_name、Instance_name和Oracle_SID(转载)
  • 原文地址:https://www.cnblogs.com/thomaswang/p/2469999.html
Copyright © 2011-2022 走看看