【问题标题】: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 将在渲染时解析(作为对象)硬编码的数据属性,但之后您设置为字符串的任何数据属性都将存储为文本,无论是否用花括号括起来。

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多