【问题标题】:Fetching javascript output using php [closed]使用 php 获取 javascript 输出 [关闭]
【发布时间】:2012-10-22 13:17:04
【问题描述】:

例如我在 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 做到这一点?

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

【问题讨论】:

  • PHP 在服务器上,JavaScript 在客户端。您需要使用 AJAX 请求将信息发送回服务器。
  • 谁投了反对票?如果你不知道答案,请跳过。这不是你的知识所能掌握的。
  • 我不明白您为什么要使用 JavaScript 而不是 PHP 来生成随机数?
  • @PrakashTimilsina 这是一个很大的话题和一个单独的问题。你需要先做研究。我敢肯定,如果您使用 AJAX 和 PHP 进行谷歌搜索,您会发现大量教程。
  • -1 因为没有进行任何 基础研究。

标签: php javascript


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    但您也可以使用常规 JavaScript 来做到这一点: http://linuxgazette.net/123/smith.html

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        尝试使用:

        jQuery.getScript()

        你可以在success回调上执行一个函数。

        【讨论】:

          猜你喜欢
          • 2012-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 2017-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多