如何在$.getJSON中获取控制器动态添加的Model属性元素
解决动态访问JSON对象属性的问题
嘿,我懂你的需求了——后端根据数据库值动态生成了_104group、_105group这类带ID后缀的属性,现在要在前端通过commGroups数组里的ID,逐个获取这些属性对应的商品列表对吧?
你之前的代码里直接alert(object)没法精准定位到动态属性,这是因为JavaScript里用.点符号只能访问固定名称的属性,要处理动态命名的属性,得用方括号访问符object[属性名字符串]才行。
修改后的完整代码示例
$(document).ready(function() { $.getJSON("<c:out value="${pageContext.request.contextPath}"/>/mainCommodity/mainCommodity/load.html", function(object) { if (object.is_error == "1") { $("#addTranceButton").hide(); var statusMessageKey = object.statusMessageKey; if (statusMessageKey.trim() != "") { $("#messages").show(); $("#messageLabel").show(); $("#messageLabel").html(statusMessageKey); } } else { // 假设commGroups是包含104、105、106这类ID的数组 for (var i = 0; i < commGroups.length; i++) { // 拼接动态属性名:比如把104变成"_104group" var propName = "_" + commGroups[i] + "group"; // 通过方括号获取对应的商品列表 var commodityList = object[propName]; // 这里可以对列表做自定义处理,比如打印或渲染到页面 if (commodityList && Array.isArray(commodityList)) { console.log("Group " + commGroups[i] + " 的商品数据:", commodityList); // 举个渲染示例:把每个商品名称添加到页面容器 commodityList.forEach(function(item) { $("#commodityContainer").append("<div class='commodity-item'>" + item.name + "</div>"); }); } else { console.warn("未找到Group " + commGroups[i] + " 对应的数据"); } } } }); });
核心要点说明
- 方括号访问符支持变量或字符串拼接的结果,完美适配动态属性名的场景
- 加
if (commodityList && Array.isArray(commodityList))的判断,能避免后端未返回对应属性时出现报错 - 不管
commGroups里存的是数字还是字符串类型的ID,字符串拼接逻辑都能正常生效
内容的提问来源于stack exchange,提问作者sahar
相关产品推荐
相关产品推荐

