我将mysql结果发送到关联数组,然后使用JSON编码
$showDisplayResult = $mysqlConn->query($getDisplayPage);
while($row=mysqli_fetch_assoc($showDisplayResult))
{
$rows[] = $row;
}
$showDisplays = json_encode($rows);
在我的主页中,我正在使用JavaScript抓取,解析它并将正确的变量附加到我的URL中。该功能似乎可以正常工作,但仅显示未定义为URL中的变量。
这是javascript:
<script type="text/javascript">
let obj = <?php echo $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>
所以我的URL现在是showDisplay.php?display = undefined&pageID = undefined
如何获取此信息以正确解析JSON?
更新:
如果我回显$ showDisplays,这是打印的JSON:
[{"pageID":"104","page_type_id":"1","display_id":"3","slide_order":null,"duration":"56","active":"1","background_img":null,"panel_id":"96","panel_type_id":"1","page_id":"104","cont_id":"148","contID":"148","content":"\r\n\r\n\r\n<\/head>\r\n\r\nThis is full content<\/p>\r\n<\/body>\r\n<\/html>"},{"pageID":"116","page_type_id":"1","display_id":"3","slide_order":null,"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":"\r\n\r\n\r\n<\/head>\r\n\r\nThis background should be green<\/p>\r\n<\/body>\r\n<\/html>"}]
因此,在页面加载时,我希望该网址具有display=3&pageID=104
,然后在56秒(其持续时间)之后,它应该刷新,并且该网址应为display=3&pageID=116
,持续54秒,然后保持循环状态>
答案 0 :(得分:1)
如果我正确阅读了代码,则$showDisplays
是行对象的数组,而不是单个行对象。但是,JavaScript会尝试访问行对象的属性,就像它们在其包含数组obj
上一样。
如果要访问数组中第一行对象的属性,可以使用以下方法进行操作:
params.set("pageID", obj[0].pageID);
params.set("display", obj[0].display_id);
下一行对象将在下一个索引obj[1]
处。因此,为了按顺序获取所有行对象,您将对其进行循环。