使用javascript src加载外部php文件

时间:2012-05-29 04:38:18

标签: php javascript

我目前正在使用以下方法使用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上测试过,即使我在加载完之前刷新页面,随机数也会一直重新生成。

2 个答案:

答案 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
?>

请参阅http://php.net/manual/en/function.header.php

答案 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文件。