【发布时间】:2019-11-27 14:05:35
【问题描述】:
我有一个站点,我在其中从 JSON 文件呈现块,然后用户可以在其中以另一种方式对块进行排序,然后我将其保存到数据库中。我的问题是如何保持相同的结构,因为它不是一个扁平的 JSON 结构。
来自 JSON 文件的示例:
[{
"part": 0,
"blocks": [
{
"type": "template",
"id": "SOME_ID_0"
},
{
"type": "template",
"id": "SOME_ID_1"
},
]
},
{
"part": 1,
"blocks": [
{
"type": "template",
"id": "SOME_ID_2"
},
{
"type": "template",
"id": "SOME_ID_3"
},
]
}]
从 JSON 文件中,“块”中的每个对象都被渲染并可以重新排列,因此第 0 部分中的块可以有 3 个块,第 1 部分可能只有一个块,等等。每个块在“部分”中的原因" 而不仅仅是平面是因为我在某些特殊情况下只渲染了某些部分。
HTML 示例:
<div class="blockContent" data-blockcontent="ADD 'part' JSON HERE SOMEHOW?">
<div class="blockContent" data-blockcontent="{"type":"template","id":"SOME_ID_0"}">Some info 1</div>
<div class="blockContent" data-blockcontent="{"type":"template","id":"SOME_ID_1"}">Some info 2</div>
</div>
<div class="blockContent" data-blockcontent="ADD 'part' JSON HERE SOMEHOW?">
<div class="blockContent" data-blockcontent="{"type":"template","id":"SOME_ID_2"}">Some info 3</div>
<div class="blockContent" data-blockcontent="{"type":"template","id":"SOME_ID_3"}">Some info 4</div>
</div>
对于 jquery/ajax 代码,我使用 push:
// Save block structure for ÅR
var blockContent=[];
$("#myForm").find('.blockContent').each(function(i,item){
blockContent.push($(item).data('blockcontent'));
});
$.ajax({
url:"/ajax/saveBlockStructure",
method:"POST",
async:true,
data: {
id: "{{ $id }}",
_token: "{{ csrf_token() }}",
blockStructure: JSON.stringify(blockContent)
}
}); }
对于 PHP/Laravel 代码,我只有一个循环来迭代 json 文件,我认为这里没有必要展示。
我不知道怎么做,但我想我应该以某种方式在父 div 中添加部分/块的开头并结束它,然后从下一部分开始?
【问题讨论】:
-
您可能希望
part包装元素使用不同的类,并将part值传递给属性。然后用内部循环循环所有那些part元素以构建它的blocks数组
标签: javascript jquery json jquery-ui