我正在尝试为我的页面设置URL循环,而不是实际循环URL,我希望它按间隔刷新并将pageID附加到当前URL。
该功能在第一次刷新后即可使用,但无法在初始页面加载时使用。
当我访问页面时,URL为cmstestLocal.com/showDisplay.php?display=3
,该URL适合显示,但应将第一个JSON元素的pageID
附加到该URL上,例如&pageID=116
部分问题是我当前在控制台中的JSON仅打印数组的最后一个元素。
php的数组如下:
Array ( [pageID] => 104 [page_type_id] => 1 [display_id] => 3 [slide_order] => [duration] => 56 [active] => 1 [background_img] => [panel_id] => 96 [panel_type_id] => 1 [page_id] => 104 [cont_id] => 148 [contID] => 148 [content] =>first page
Array ( [pageID] => 116 [page_type_id] => 1 [display_id] => 3 [slide_order] => [duration] => 54 [active] => 1 [background_img] => images/BG_spring.svg [panel_id] => 113 [panel_type_id] => 1 [page_id] => 116 [cont_id] => 165 [contID] => 165 [content] =>second page
在页面加载上,我试图获取编码为JSON的php数组,并获取第一个JSON元素的pageID并将其附加到URL。
<?php foreach($showDisplayResult as $showDisplays): ?>
<!-- some test html -->
<?php endforeach?>
<script type="text/javascript">
let obj = <?php echo json_encode($showDisplays); ?>;
//obj = JSON.parse(obj);
let params = new URL(document.location).searchParams;
params.set("pageID", obj.pageID);
params.set("display", obj.display_id);
let url = window.location.href.split('?')[0];
let nextURL = url + "?" + params.toString();
window.setTimeout(function () {
window.location.href = nextURL;
}, obj.duration * 1000);
console.log(obj);
</script>
此控制台显示JSON:
{pageID: "116", page_type_id: "1", display_id: "3", slide_order: null, duration: "54", …}
active:"1"
background_img:"images/BG_spring.svg"
contID:"166"
cont_id:"166"
content:"<!DOCTYPE html>↵<html>↵<head>↵</head>↵<body>↵<p>second page</p>↵</body>↵</html>"
display_id:"3"
duration:"54"
pageID:"116"
page_id:"116"
page_type_id:"1"
panel_id:"113"
panel_type_id:"1"
这是我数组的最后一个元素。如何获取JavaScript以正确解析整个数组,保存查询中的所有页面结果,然后确保在初始页面加载时已经将第一个pageID附加到URL上?换句话说,它永远不应仅具有“ showDisplay.php?display = 3”,它应始终具有页面ID。