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串中的类名相同(可以忽略大小写)才能传值成功。

  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/thomaswang/p/2469999.html
Copyright © 2011-2022 走看看