我正在使用codeigniter MVC。假设我有一个像这样的json:
[{id:1, parent: null}, {id:2, parent:null}, {id:3, parent:1}]在我看来,我经历了一个这样的数组,我需要首先用id=1加值,然后用parent=1加值,然后用id=2加值,再用parent=2加值,依此类推(在本例中,id=3被跳过,因为它已经被添加为parent=1)
为此,我有大约300个sql行,而AFAIK我不能按照我需要的顺序创建sql语句(如果这是可能的,它将解决我的问题)。
所以我得另想办法。我想过加载页面并在$(document).ready上进行ajax调用并带来数据,但在这种情况下,我遇到了问题,因为它是一个表单,以防出现错误,我想以用户发送的相同状态重新加载页面。由于PHP将保存此状态,因此我不能通过ajax调用来完成此操作。
我想的另一个解决方案,但我认为从长远来看是困难的,那就是在PHP和JS之间进行混合,比如
<script><?php (parent != null) ? $("#" + parent).append(content)?></script>但这给我带来了一些麻烦,因为有些内容\n和我无法控制的东西。
有没有人遇到过这样的问题,或者有谁有办法解决它?
我希望避免一种使我多次遍历此数组的解决方案
发布于 2020-04-21 18:16:33
这段代码可能会对你有所帮助。
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<style type="text/css">
#json_container span{
display: block;
}
</style>
</head>
<body>
<div id="json_container"></div>
<script type="text/javascript">
var jsonData = [{id:1, parent: null}, {id:2, parent:null}, {id:3, parent:1}, {id:4, parent:2}];
$jsonContainer = $('#json_container');
$(function(){
$.each(jsonData, function(i, item) {
$elm = '<span id="json_el'+item.id+'">'+item.id+'</span>';
if($('span#json_el'+item.parent).length > 0)
$($elm).insertAfter('span#json_el'+item.parent);
else
$jsonContainer.append($elm);
});
});
</script>
</body>
</html>在这里,我添加了跨度来分隔每个元素,并将其显示为块。如果它的父级不存在,它将追加。
https://stackoverflow.com/questions/61335625
复制相似问题