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

如何在$.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:26