我有后端生成的以下 HTML 标签
<select name="brand" class="form-control">
<option value="1" data-info="[{id=1, name=detail#1}, {id=2, name=detail#2}, {id=3, name=detail#3}]">brand#1</option>
<option value="2" data-info="[{id=3, name=detail#3}, {id=4, name=detail#4}, {id=5, name=detail#5}]">brand#2</option>
</select>
我试图在用户更改选项时访问数据信息值,所以我尝试此代码
$('#brand').on('change', function(){
var optionSelected = $("option:selected", this);
var info = optionSelected.data("info")
console.log(typeof info)
})
但是当我得到 typeof 信息时,我得到一个字符串,我需要和对象。
如果我尝试 JSON.parse(info),我会得到 SyntaxError: JSON.parse:预期属性名称或 '}' 在 JSON 数据的第 1 行第 3 列
我知道此错误可能有两个原因:信息已解析或它不是有效的 json。
感谢任何帮助
最佳答案
jQuery 的 JSON 处理程序仅转换有效的 JSON。您那里的 JSON 无效。具体来说,它缺少必要的引号,并且您使用的是 =
而不是 :
。它应该是这样的:
<option value="1" data-info='[{"id":1, "name":"detail#1"}, {"id":2, "name":"detail#2"}, {"id":3, "name":"detail#3"}]'>brand#1</option>
仅供引用,the JSON spec .
关于javascript - jquery数据不解析值html5数据自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483953/