-6

例如我在 js.php 中有这段代码

<script type="text/javascript">
document.write(Math.random());
</script>

这会输出随机数,例如:0.123123123123

现在,我有 fetch.php 我试过这段代码:

<?
 echo file_get_contents("js.php");
?>

这给出了输出:

<script type="text/javascript">
document.write(Math.random());
</script>

但是,我希望输出为0.123123123123-- 这是由 javascript 生成的输出。我不想要源代码,而是该代码的输出。如何使用 PHP 做到这一点?

注意:随机数只是一个样本。我还有其他事情要做。

4

4 回答 4

2

JS 是一种不同的编程语言,它需要由支持 JS 的解析器来解释。您不能只使用 PHP 获取 HTML 文档并期望 JS 运行,PHP 将看到的只是文本。

解决这个问题的两种一般方法是:

  1. 通过 HTTP 将 HTML 文档传递给浏览器。在浏览器中运行 JS。通过 HTTP 传回数据。(例如通过 XMLHttpRequest,或在填充隐藏输入后使用 JS 提交表单(也使用 JS))。
  2. 将 JS 传递给在服务器上运行的 JS 解析器。例如使用PHP 的 v8js

这些方法中的任何一种都需要修改 JS;它目前旨在向 HTML 文档添加内容。如果您使用的是浏览器,那么您必须添加更多的 JS 来提取它。如果您使用的是 v8,那么您必须要么重写 JS,要么模拟document对象。

您还可以采用介于两者之间的方法并以编程方式控制服务器上的浏览器(例如使用Selenium)。这样,您将指示浏览器获取文档,然后您可以使用 PHP API 从中读取 DOM。

于 2012-10-22T13:21:11.660 回答
0

您需要使用 AJAX 来实现这一点。使用 jQuery 更容易做到这一点:http: //api.jquery.com/jQuery.ajax/

但您也可以使用常规 JavaScript: http: //linuxgazette.net/123/smith.html

于 2012-10-22T13:20:43.567 回答
0

缺少使用 ajax 调用,你不能。您正在尝试结合客户端和服务器端脚本。如果不使用 ajax 调用,他们就无法进行通信。php 脚本将首先运行,因为它的服务器端。因此,当 PHP 运行时,还没有生成 JavaScript 随机数。页面必须加载,JavaScript 必须生成随机数,然后必须对服务器进行 ajax 调用。然后您的 PHP 脚本可以使用该数字。

于 2012-10-22T13:22:18.260 回答
-1

尝试使用:

jQuery.getScript()

success您可以在回调上执行函数。

于 2012-10-22T13:24:55.883 回答