使用php获取javascript输出

时间:2012-10-22 13:17:05

标签: php javascript

例如我在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 个答案:

答案 0 :(得分:2)

JS是一种不同的编程语言,需要由具有JS功能的解析器进行解释。您不能只使用PHP获取HTML文档并期望JS运行,所有PHP都会看到文本。

这两种一般方法是:

  1. 通过HTTP将HTML文档传递给浏览器。在浏览器中运行JS。通过HTTP传回数据。 (例如,通过XMLHttpRequest,或在填充隐藏输入(也使用JS)后使用JS提交表单)。
  2. 将JS传递给在服务器上运行的JS解析器。例如使用PHP's v8js
  3. 这些方法中的任何一种都需要修改JS;它目前旨在向HTML文档添加内容。如果您使用的是浏览器,则必须添加更多JS才能将其解压缩。如果您使用的是v8,那么您必须重写JS,或者模拟document对象。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

尝试使用:

jQuery.getScript()

您可以在success回拨上执行一项功能。