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

在data属性存储数组后,用JavaScript/jQuery读取仅获开头括号的问题

问题原因

你直接将JSON字符串拼接进HTML属性值时,JSON内部的双引号和属性的双引号发生冲突,导致HTML解析器在遇到第一个内部双引号时就截断了属性值,所以只能读到数组的左括号[。

解决方案

推荐两种解决方式,优先选第一种:

方式一:用jQuery的data()方法存储数据(更安全便捷)

不用将数组转成JSON拼到HTML里,直接通过jQuery的data()方法给元素绑定数据,无需处理转义:

var array = [{"note": "Hey I love you!",
    "full_name": "Sarah James",
    "date_added": "14 September 2022"
},{
    "note": "Hey I love you too!",
    "full_name": "Billy Smith",
    "date_added": "15 September 2022"
}];

// 创建按钮元素并绑定数据
var $btn = $('<button class="viewTicketBtn">Click Here</button>');
$btn.data('test', array);
$('.o').append($btn);

// 点击时直接获取绑定的数组
$(document).on('click', '.viewTicketBtn', function(){ 
    var data = $(this).data('test');
    console.log(data);
});

方式二:转义JSON中的双引号(适合必须拼HTML字符串的场景)

如果一定要拼接HTML字符串,需要把JSON里的双引号转义成HTML实体&quot;,避免和属性的双引号冲突:

var array = [{"note": "Hey I love you!",
    "full_name": "Sarah James",
    "date_added": "14 September 2022"
},{
    "note": "Hey I love you too!",
    "full_name": "Billy Smith",
    "date_added": "15 September 2022"
}];

// 转义JSON中的双引号
var stringed = JSON.stringify(array).replace(/"/g, '&quot;');

$('.o').append('<button data-test="'+stringed+'" class="viewTicketBtn">Click Here</button>');

$(document).on('click', '.viewTicketBtn', function(){ 
    var str = $(this).attr('data-test');
    // 将转义后的字符串解析回数组
    var data = JSON.parse(str);
    console.log(data);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:26:23