来自数组的JSON无法正确解析

时间:2018-08-02 18:11:53

标签: javascript php json

我将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秒,然后保持循环状态

1 个答案:

答案 0 :(得分:1)

如果我正确阅读了代码,则$showDisplays是行对象的数组,而不是单个行对象。但是,JavaScript会尝试访问行对象的属性,就像它们在其包含数组obj上一样。

如果要访问数组中第一行对象的属性,可以使用以下方法进行操作:

params.set("pageID", obj[0].pageID);
params.set("display", obj[0].display_id);

下一行对象将在下一个索引obj[1]处。因此,为了按顺序获取所有行对象,您将对其进行循环。