我收到以下代码的错误。我知道$.parseJSON()
对单/双引号很敏感。我想不出这个问题的解决方案。你能帮忙吗?
<div data-x='{"a":"1","b":"2"}'></div>
$(document).ready(function(){
var data =$.parseJSON($("div").data("x"))
alert(data.a)
})
答案 0 :(得分:3)
jQuery&#39; s data()
进行类型转换,因此当数据属性是有效的JSON时,它已经被解析为一个对象,并且将一个对象传递给$.parseJSON
会产生错误,因为它需要一串JSON。
$(document).ready(function(){
var data = $("div").data("x");
console.log(data.a);
});
每次尝试将字符串转换为JavaScript值 (包括布尔值,数字,对象,数组和null) 如果这样做不会更改值,则只会将值转换为数字 表示。
例如,&#34; 1E02&#34;和&#34; 100.000&#34;相当于 数字(数值100)但转换它们会改变它们 表示所以它们被保留为字符串。字符串值&#34; 100&#34;是 转换为数字100。
当数据属性是对象时 (以&#39; {&#39;开头)或数组 (以&#39; [&#39;开头] 开头,然后
jQuery.parseJSON
用于解析字符串; 它必须遵循有效的JSON语法,包括引用的属性名称。如果 该值不能作为JavaScript值进行解析,而是保留为 字符串。要将值的属性检索为字符串而不进行任何尝试 转换它,使用
attr()
方法。