【问题标题】:jquery data attribute not parsing json stringjquery数据属性不解析json字符串
【发布时间】:2017-08-09 09:33:31
【问题描述】:
我正在使用JSON.stringify() 在 html 数据属性中保存 javascript 对象数组。当我尝试使用 jquery .data() 函数检索数据时,我没有得到反序列化的 javascript 对象数组,而是给了我普通的 json 字符串。我读到,jquery .data() 函数反序列化文档中引用的 Json 字符串
当数据属性为对象(以'{'开头)或数组(以'['开头)时,则使用jQuery.parseJSON解析字符串;
它必须遵循有效的 JSON 语法,包括引用的属性名称。如果
该值不可解析为 JavaScript 值,它保留为
字符串
我认为,我的是一个有效的 json 字符串,因为如果我尝试 $.parseJSON ,它会返回 javascript 对象数组。
请帮忙!
【问题讨论】:
标签:
javascript
jquery
json
【解决方案1】:
您不需要使用 jQuery.data() 对对象进行字符串化来存储它们。像这样存储对象:
var myobject = { "name":"john", "age":30};
jQuery('#dataholder').data('theobject',myobject);
console.log(jQuery('#dataholder').data('theobject'));
console.log(jQuery('#data_attribute_method').data('theobject'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dataholder"></div>
<div id="data_attribute_method" data-theobject='{ "name":"jim", "age":31}'></div>
jQuery 将在渲染时解析(作为对象)硬编码的数据属性,但之后您设置为字符串的任何数据属性都将存储为文本,无论是否用花括号括起来。