gpt4 book ai didi

javascript - 通过将 json 值附加到 URL 并按时间间隔刷新来循环页面 URL

转载 作者:行者123 更新时间:2023-12-03 01:23:32 25 4
gpt4 key购买 nike

我正在尝试让我的 cms 站点将页面 ID 附加到我的静态 URL 并使用 javascript 或可能的 ajax 循环浏览它们。

如果您点击 Display 3,现在的网址为 http://local.CMSTest.com/showDisplay.php?display=3这是我期望从上一页的链接中得到的结果。

我正在尝试更改我一直使用的数组以严格使用 json,并且我想使用 javascript 来设置 url,并在一段时间后刷新页面到下一个 url。

下面是我当前数组的每个返回结果的 json 打印,共两页。

所以在这种情况下,在页面加载时我想要1. 将第一个对象的 pageID 附加到 URL,该 URL 类似于 http://local.CMSTest.com/showDisplay.php?display=3&pageID=1042.使用第一个JSON对象的其他元素(panel_type_id、content等)来填写html3. 使用 json 的持续时间(以秒为单位)来设置间隔4. 时间到后,刷新页面,现在循环附加下一个 pageID http://local.CMSTest.com/showDisplay.php?display=3&pageID=116 等等.

当前的 javascript 打印出我期望在控制台中的下一个 URL,但我期望它将第一个数组/json 结果的 pageID 附加到当前事件 URL,但事实并非如此,它只是显示?diplay=3。所以我觉得它走在正确的轨道上,但我在某处遗漏了一些东西

这是 JSON 结构:

{pageID: "104", page_type_id: "1", display_id: "3", slide_order: null, duration: "54", …}
active:"1"
background_img:"images/BG_spring.svg"
contID:"165"
cont_id:"165"
content:"<!DOCTYPE html>↵<html>↵<head>↵</head>↵<body>↵<p>This is the first page</p>↵</body>↵</html>"
display_id:"3"
duration:"54"
pageID:"104"
page_id:"104"
page_type_id:"1"
panel_id:"114"
panel_type_id:"1"

{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>This is the 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"

当前 HTML

<?php foreach($showDisplayResult as $showDisplays): ?>
<?php if($showDisplays['page_type_id'] == 1){ ?>

<?php //print_r($showDisplays);?>
<div class="row top">
<?php include 'banner.php'?>
</div>

<div class="row middle" style="background-image: url(<?php echo $showDisplays['background_img']?>);">
<div class="col-lg-12">
<?if($showDisplays['panel_type_id'] == 1){?>
<div class="fullContent" style="/*background-color: rgba(255, 255, 255, 0.5);*/ height: 100%; ">
<?php echo $showDisplays['content']?>
</div>
<?}?>
</div>
</div>

<div class="row bottom">
<?php include 'ticker.php';?>
</div>

<?php }?>
<?php endforeach?>

和 JavaScript:

<script type="text/javascript">
function setDisplay() {
let params = new URL(document.location).searchParams;
let pageID = params.get("pageID");
let disply = params.get("display");
// set the html based on pageID and display
}

function getNextURL() {
// encode your php array to json
let obj = <?php echo json_encode($showDisplays); ?>;

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();
console.log(nextURL);
console.log(obj);
return nextURL
}

getNextURL();
</script>

最佳答案

如果它注销了正确的值(看起来应该是这样),那么您所缺少的就是更改窗口的实际 URL:

window.location.href = getNextUrl();

请记住,您尚未实现延迟,因此当前会毫无延迟地不断刷新到下一页。

更新回答评论问题:

为了能够仅在 obj.duration 之后更新 url,您可以对 getNextURL 函数执行以下操作:

// encode your php array to json
let obj = <?php echo json_encode($showDisplays); ?>;

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);

在上面的代码中,我假设您的持续时间以秒为单位,但是 window.setTimeout 以毫秒为单位,因此 * 1000

这将在创建下一个 URL 后,等待 obj.duration 秒数,然后将下一个 URL 指定为当前 url。

关于javascript - 通过将 json 值附加到 URL 并按时间间隔刷新来循环页面 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com