You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AJAX中动态获取JSON对象的主键属性值?

动态访问AJAX返回JSON对象的不同主键属性

前端核心解决方案:方括号语法动态取值

JavaScript中访问对象属性支持两种方式,其中方括号语法允许用字符串变量作为属性名,完美适配你的动态主键场景。修改AJAX的成功回调代码即可:

$.ajax({
  type: 'POST',
  url: '/Controller/Action',
  dataType: 'json',
  contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  data: myForm,
  success: function (data) {
    // 假设你已通过表单隐藏域/全局变量等方式获取到主键字段名
    let primaryKeyName = 'CarId'; // 示例值,实际可动态获取如:$('#myForm input[name="PrimaryKey"]').val()
    // 用方括号语法动态访问属性
    let primaryKeyValue = data[primaryKeyName];
    // 后续业务逻辑...
  }
});

后端代码优化(推荐)

你当前的控制器代码存在冗余:手动序列化对象为字符串后再用JsonResult返回,会导致前端拿到的是JSON字符串,需要额外调用$.parseJSON解析。直接返回对象给JsonResult,ASP.NET会自动完成序列化:

// 移除手动序列化步骤,直接返回插入后的对象
return new JsonResult(insertedObject);

优化后前端success回调中的data直接是JSON对象,无需额外解析。

通用适配多表单示例

可以在表单中添加隐藏域存储当前表的主键字段名,配合封装的通用提交函数实现多表单适配:

表单示例(Car表)

<form id="carForm">
    <input type="hidden" name="PrimaryKeyName" value="CarId" />
    <input type="hidden" name="TableId" value="@Model.TableId" />
    <input class="form-control" type="text" name="Name" id="CarName" />
</form>

通用提交函数

function submitDynamicForm(formId, apiUrl) {
  const $form = $('#' + formId);
  const primaryKeyName = $form.find('input[name="PrimaryKeyName"]').val();

  $.ajax({
    type: 'POST',
    url: apiUrl,
    dataType: 'json',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    data: $form.serialize(),
    success: function (res) {
      const primaryValue = res[primaryKeyName];
      console.log('插入成功,主键值:', primaryValue);
      // 通用成功逻辑:如刷新列表、提示用户等
    },
    error: function(xhr) {
      console.error('提交失败:', xhr.responseText);
    }
  });
}

// 调用示例
submitDynamicForm('carForm', '/Car/Insert');
submitDynamicForm('peopleForm', '/People/Insert');

内容的提问来源于stack exchange,提问作者LGM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:57:17