You need to enable JavaScript to run this app. jQuery遍历JSON响应动态拼接HTML时输出[object Object]无法读取属性
优惠活动
大模型
产品
解决方案
定价
更多

jQuery遍历JSON响应动态拼接HTML时输出[object Object]无法读取属性

问题根因

你页面上输出连续的[object Object],和value.MenuName的读取逻辑完全无关,核心错误出在遍历方法的返回值上:

  • $.each()是jQuery提供的遍历工具,它的默认返回值是你传入的待遍历目标本身(也就是你的data_obj数组),并不会把循环回调里写的HTML片段收集后返回
  • 你把$.each()的执行结果直接传给.append()时,jQuery会把这个对象数组隐式转为字符串——数组内每个JS对象直接做字符串转换的结果就是[object Object],最终就形成了你看到的异常输出
  • 你在循环内部写的HTML拼接代码,因为没有把生成的内容做存储,根本没有机会被渲染到页面上,自然会觉得value.MenuName读不出来。
修正实现

调整遍历的逻辑流:先准备空字符串容器存所有要拼接的HTML,遍历过程中逐段拼接,循环跑完后再一次性追加到目标容器。
修正后的核心代码:

//load assigned menu
$(".editItemText").on("click", function () {
    $("#CollapsibleItemPlaceHolder").empty();
    var categoryId = $(this).attr("data-productId");
    $('#btnSaveMenu').attr('categoryId', categoryId);

    $.post("/Demo/GetAssignedMenu", { CategoryId: categoryId }).done(function (data) {
        // 如果接口返回标准JSON格式,jQuery会自动解析,可去掉手动JSON.parse
        const data_obj = JSON.parse(data);
        let generatedHtml = ''; // 存储拼接的HTML内容

        $.each(data_obj, function (key, value) {
            // 逐段拼接每一项的HTML
            generatedHtml += `
            <div class="EachCategorySet">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" href="#child_b">
                        <small>${value.MenuName}</small>
                    </a>
                    <div style="padding-left:16px; float:right; margin-top:-40px;" class="checkbox">
                        <label class="checkbox-container">
                            <input type="checkbox" class="css-checkbox parent_checkbox" name="selectall" />
                            <span data-ripple class="bg-primary-darker checkmark"></span>
                        </label>
                    </div>
                </div>
            </div>`
        });

        // 遍历完成后一次性追加渲染
        $("#CollapsibleItemPlaceHolder").append(generatedHtml);
    });
});
额外注意点
  • 原代码的字符串拼接存在语法错误:混写反引号模板和+运算符,把字符串首尾的加号错放在$.each闭包内部,会触发JS解析报错,统一用模板字符串插值语法能降低拼接出错概率
  • 若接口响应头指定Content-Type: application/json,jQuery会自动解析返回的JSON,此时手动调用JSON.parse(data)会触发类型错误,可根据实际接口逻辑调整
  • 修正后value.MenuName的属性读取逻辑是完全生效的,之前的读取异常本质是循环生成的内容没有进入渲染流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 05:06:09