我正在为我的学校开发一个窄播系统,目前我正在使用JavaScript在主显示页面上的iFrame的URL之间轮换。
我希望能够通过PHP的后端更改这些值。然而,我不知道如何将2行(module_url和module_time(放入一个数组中并将其返回到JS。
浏览stackoverflow时,我尝试了各种代码,这一个有点奏效,只是它会抛出URL,比如:"var arrayObjects = ["https://domain.eu/dir/page.php","https://domain.eu/dir/page.php"]
"。
(我希望数组显示:"var arrayObjects = ["https://domain.eu/dir/page.php", 20]
"。其中URL代表新的iFrame源,20代表页面显示时间。(
因此,我的主要问题是,如何将2行放入1个数组中,以及如何确保数组显示正确的链接和模块时间。
<?php
$mysqli = new mysqli('localhost', 'user', 'pw', 'db');
if ($stmt = $mysqli->prepare("SELECT module_url FROM db")) {
$stmt->bind_result($name);
$OK = $stmt->execute();
}
//put all of the resulting names into a PHP array
$result_array = Array();
while($stmt->fetch()) {
$result_array[] = $name;
}
//convert the PHP array into JSON format, so it works with javascript
$json_array = json_encode($result_array);
?>
<script>
//now put it into the javascript
var arrayObjects = <?php echo $json_array; ?>
ALL OTHER JS CODE
</script>
Edit:module_time目前没有添加到MySQLi查询中。
首先,PHP数组应该是多维度的,比如:
$result_array[] = array($name, <time here>);
然后,由于您已经使用json_encode并将其分配给JS数组,因此它实际上已经是Javascript中的一个数组,也就是说,您已经可以访问以下元素:
arrayObjects[0][0]; <---- first element URL
arrayObjects[0][1]; <---- first element time
将JavaScript数组打印到HTML将显示为文本,如:
http://www.google.com,20,http://www.google.com,30
顺便说一下,您可以使用JSON.stringify((打印实际的Javascript数组,而不是文本,示例:
var array = JSON.stringify(<?php echo $json_array; ?>);
document.write(array);
将输出:
[["http://www.google.com",20],["http://www.google.com",30]]