javascript - 来自数组的 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>
所以我的网址现在是 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>"}]
因此,在页面加载时,我希望 urldisplay=3&pageID=104
在 56 秒(其持续时间)后刷新,并且 URL 应该display=3&pageID=116
为 54 秒,然后保持循环
解决方案
如果我正确阅读代码,$showDisplays
是行对象数组,而不是单行对象。然而,JavaScript 会尝试访问行对象的属性,就好像它们在其包含数组中一样,obj
.
如果要访问数组中第一行对象的属性,可以这样做:
params.set("pageID", obj[0].pageID);
params.set("display", obj[0].display_id);
下一行对象将位于下一个索引处obj[1]
。因此,为了按顺序获取所有行对象,您将遍历它们。
推荐阅读
- rest - 当在数据库中找不到正文中的数据时,响应状态码应该是什么
- javascript - 我正在尝试启动弹出/模态屏幕
- linux - 为 max310x SPI-UART 转换器启用 RS485 模式
- javascript - 将文件记录到 chrome 扩展名
- android - EditText() 的奇怪问题 - Android Kotlin
- php - 在 Linux CentOS 中使用 Spout PHP 文件格式或文件扩展名无效
- python - 尝试训练神经网络时出错 - “命名空间”对象没有属性“steps_for_validation”
- python-3.x - 在 sqlite3 python 中检查条目是否存在
- c++ - 什么是指针稳定性?
- java - 如何使用最新的 MobileNet (v3) 进行目标检测?