【问题标题】:jquery data is not parsing value html5 data custom attributejquery数据未解析值html5数据自定义属性
【发布时间】:2016-04-07 18:05:23
【问题描述】:

我有以下由后端生成的 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),我会在 JSON 数据的第 1 行第 3 列得到 SyntaxError: JSON.parse: expected property name or '}'

我了解此错误可能有两个原因,信息已被解析或它不是有效的 json。

感谢任何帮助

【问题讨论】:

  • 您拥有的 JSON 无效

标签: javascript jquery json html


【解决方案1】:

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

【讨论】:

  • 你是对的@Ouroborus,我刚刚修复了后端的错误,现在正在按照你的建议呈现有效的 json,我正在获取对象
猜你喜欢
  • 2013-04-14
  • 2011-05-07
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多