我目前正在使用以下方法使用javascript调用带有一些变量的外部php文件
<script src="http://www.domain.com/function.php?param=A" type="text/javascript"></script>
function.php文件中的代码将以Javascript格式返回数据,如
<?php Header("content-type: application/x-javascript");
$p = $_GET['param'];
$r = mt_rand(0, 10);
echo "document.write('" . $p . $r . "');";
?>
这只是一个简单的例子。我的问题出在谷歌浏览器(第19版)上,如果页面没有加载完毕,当我不断刷新时,随机数不会随机。只有当页面完成加载后点击刷新按钮时,它才会真正随机。为什么会发生这种情况,我该如何解决?
我在Firefox 12和IE8上测试过,即使我在加载完之前刷新页面,随机数也会一直重新生成。
答案 0 :(得分:1)
您的网址的查询字符串显示为param=A
,您在PHP / JS文件中引用了$_GET['param1']
。不应该是$_GET['param']
?
您可能希望添加标题,以便不缓存您的js文件
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
答案 1 :(得分:0)
你需要一个小的JS黑客。基本上,您希望在JS中动态添加<script>
标记,并在URL的末尾添加随机参数。
var hookScripts = function(url, src) {
var s = document.createElement("script");
s.type = "text/javascript";
s.src = url || null;
s.innerHTML = src || null;
document.getElementsByTagName("head")[0].appendChild(s);
};
hookScripts('http://www.domain.com/function.php?param=A&randomSalt=' + Math.random());
这会强制chrome再次请求JS文件。