【发布时间】:2018-12-02 22:35:07
【问题描述】:
我正在尝试生成一个随机数(介于 1 到 151 之间),以便我可以根据随机生成的 ID 打开一个页面。这里的问题在于浏览器兼容性,因为预期的功能适用于 Edge,但不适用于 Chrome 或 FireFox。
pokedex.php:
<form action='randomPokemon.php' >
<button type="submit" class="toolsBtn">Random</button>
</form>
随机Pokemon.php:
<?php
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'pokedex.php?pid=';
$randomid = rand(1, 151);
header("HTTP/1.1 303 See Other");
header("Location: http://$host$uri/$extra" . mt_rand(1, 151));
unset($randomid);
exit;
?>
现场演示:http://fraserprovan.co.uk/projects/pokedex/pokedex.php
我不知道为什么它可以在 Microsoft Edge 而不是其他浏览器上运行。在 chrome 上,它每次都会打开相同的页面,就好像变量 $randomid 没有改变一样。任何建议或其他资源的链接将不胜感激。
更新: 决定用 Javascript 来代替使用以下函数,感谢您的建议。
function randomPokemon(){
var randomNum = Math.floor(Math.random() * 151) + 1;
document.location.replace('pokedex.php?pid=' + randomNum);
}
【问题讨论】:
-
当我在 Chrome 和 Firefox 中尝试时,得到的结果和你一样。确实很奇怪。
-
我不知道在边缘使用它有什么区别,我挠头。
-
调用
randomPokemon.php时,URL 会按预期更改为pokedex.php。即使我使用randomPokemon.php粘贴 URL,也会发生这种情况。 -
您是否尝试过记录生成的随机数以确保 PHP 中没有异常?我越来越奇怪,但非常可重复的行为。单击
Random时我总是得到#82,但如果我使用location.href = "http://fraserprovan.co.uk/projects/pokedex/randomPokemon.php"从控制台访问页面,我总是得到#39。 -
您如何推荐日志记录?我知道如何在 javascript 中写入控制台,但在 php 中不知道