0

我目前正在使用以下方法使用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 . "');";
?>

这只是一个简单的例子。我的问题是在谷歌浏览器(v19)上,如果页面没有完成加载,我不断刷新时随机数不会是随机的。只有当我在页面完成加载后点击刷新按钮时,它才会变得真正随机。为什么会发生这种情况,我该如何解决?

我在 Firefox 12 和 IE8 上进行了测试,即使我在加载完成之前刷新页面,随机数总是会重新生成。

4

2 回答 2

1

您的 URL 的查询字符串说param=A,您正在引用$_GET['param1']您的 PHP/JS 文件。不应该$_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
?>

http://php.net/manual/en/function.header.php

于 2012-05-29T04:44:49.963 回答
0

你需要一个小的 JS hack。基本上,你想<script>在 JS 中动态添加标签,并在 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 文件。

于 2012-05-29T04:53:37.113 回答