如何在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
相关产品推荐
相关产品推荐

