我使用JSON.stringify()将javascript对象数组保存在html数据属性中。当我尝试使用jquery函数检索数据时,我没有得到javascript对象的反序列化数组,而是给出了简单的.data()字符串。我看到,jquery .data()函数反序列化Json字符串,如文档中所引用。
当数据属性是对象(以‘{’开头)或数组(以‘[’开头)时,则使用jQuery.parseJSON解析字符串;它必须遵循有效的JSON语法,包括引用的属性名称。如果该值不能解析为JavaScript值,则将其保留为字符串。
我认为,我的字符串是一个有效的json字符串,因为如果我尝试使用$.parseJSON,它会给出javascript对象的返回数组。
请帮帮我!
发布于 2017-03-17 18:10:52
您不需要使用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将在呈现时解析(作为对象)硬编码的数据属性,但是以后设置为字符串的任何数据属性都将作为文本存储,不管是否用大括号包装。
https://stackoverflow.com/questions/42864079
复制相似问题