我的数据结构如下..
[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}],[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}]
我使用
从数据标签中检索此数据var formData = $(document.getElementById('form-render-data')).data('form');
我无法迭代每个数组并访问其中的每个对象。我尝试使用around []进行解析和字符串化,但它没有任何区别。
通过使用索引循环只打印字符串中的每个字符。我没有在将它放入数据标签之前对其进行字符串化。
更新 由于对我一直试图实现的目标感到困惑,我将尽力解释整个过程。
使用Formbuilder.io构建表单。然后,我从表单中导出JSON数据,并使用Sails JS框架将它们存储在MYSQL数据库中。但是,有可能为一个会话创建多个表单,因此需要多个数组。然后我在请求中返回JSON,没有任何Stringifying或Parsing。
我已经尝试将JSON包装在方括号中,但我仍然没有运气。
答案 0 :(得分:1)
如果您修复JSON
,您的代码就可以运行
var formData = $('#form-render-data').data('form');
console.log(formData)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="form-render-data" data-form='[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"},
{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}]'>Data</div>
&#13;
如果没有,你不能解析.data,但需要attr(&#34;数据形式&#34;)和分裂
var formData = $('#form-render-data').attr('data-form');
console.log(JSON.parse(formData.split('],[').join(",")))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="form-render-data" data-form='[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}],[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}]'>Data</div>
&#13;
或换行
var formData = $('#form-render-data').attr('data-form');
console.log(JSON.parse("["+formData+"]"))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="form-render-data" data-form='[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}],[{"type" : "text", "label" : "Some Label"},{"type" : "Other type", "label": "Other label"}]'>Data</div>
&#13;
答案 1 :(得分:0)
您已在数组中嵌套JSON
。所以,你必须这样对待它。
var formData = $('#form-render-data').data('form');
for(var i = 0; i < formData.length; i++) {
console.log(formData[i].type);
console.log(formData[i].label);
}
它将迭代您的数组,将对象属性记录到控制台。
像这样修复数组数据:
[
{
"type" : "text",
"label" : "Some Label"
},
{
"type" : "Other type",
"label": "Other label"
}
,
{
"type" : "text",
"label" : "Some Label"
},
{
"type" : "Other type",
"label": "Other label"
}
]