通过php调用javascript函数

时间:2015-03-28 12:40:30

标签: javascript php function

我想从php调用javascript函数,但是在javascript之前包含了php脚本。     

<script type="text/javascript">
function myjsfunction(){
//js code
}
</script>

4 个答案:

答案 0 :(得分:2)

有点奇怪的问题......

如果你想在页面加载时调用JS函数,你可以在PHP脚本创建的页面上将它添加到页面加载的DOM底部...例如......

<script>
window.onload = function() {
  yourFunction(param1, param2);
};
</script>

答案 1 :(得分:2)

为了与Javascript的后端进行通信,我们传统上使用AJAX。 (有关该主题的更多信息,请http://www.w3schools.com/php/php_ajax_php.asp)。

但是因为它使用长期轮询(因此你有javascript请求每个说500毫秒的某个PHP调用)它会在处理大量访问者时产生大量负载,旁边事实上它并不是完全实时的,您可能需要考虑使用websockets,它允许双向通信。
http://en.wikipedia.org/wiki/WebSocket

答案 2 :(得分:2)

这不是一个糟糕的问题,但是当涉及到客户端服务器和基于Web的应用程序如何工作的基本和基本原则时,它可能会基于一些误解。 / p>

以下是我将用来说明您的问题的示例: 您正在编写基于Web的水壶控制器,并且当水壶达到沸腾温度时您想在控制器的网页上显示通知,因此可以通过以下消息通知用户茶可以是提供服务。

总体情况如下:

  1. PHP代码在服务器端执行(例如 Web服务器执行它并仅将执行输出传递给客户端)
  2. JavaScript代码在客户端执行(通过 Web浏览器
  3. Web服务器和Web浏览器通信通常使用HTTP协议,使用一组请求(由客户端发送)和答案(由服务器发送)完成。
  4. 客户端发送请求,服务器回答。您要做的是服务器向客户端发送执行脚本的请求。这在某些事件驱动或异步JS框架的上下文中是有意义的。即使我不明白你到底想要达到什么目的,我也会对此表示乐趣。

    您有以下选择:

    陈规定型的&#34;同步&#34;编程答案(对于水壶以外的情况) - 如果在解释PHP脚本时已知执行条件,则在响应/输出页面中动态生成/包含JS,就像Matt建议的那样。例如:

    
    if (sessionActive()) {
    $pageScript .= 'function runOnLoad() { alert("hit"); }
                   window.onload = runOnLoad; '
        }
    // ... do the rest
    echo $pageScript;
    

    异步执行或面向事件的执行是指在页面呈现时不知道条件(主PHP脚本执行) - 这是问题中更有趣或更重要的部分。

    选项A:使用AJAX调用连续轮询服务器。这是蹩脚,缓慢和非常低效的。

    选项B:使用AJAX调用轮询服务器,服务器需要时间来响应请求(PHP脚本循环轮询或等待直到水壶准备就绪,然后发送响应)。缺点是服务器和客户端都有超时的脚本执行。这仅适用于有限的一组案例。

    选项C:实施面向连接的协议,该协议保持与服务器的连续连接 - 例如WebSockets,允许每次从服务器接收信息时调用事件处理程序。这需要更多的技术实力,但它可能是最有效和可扩展的解决方案。

答案 3 :(得分:1)

PHP是一种服务器端脚本语言。 JS(在您的情况下)是客户端脚本语言。 JS在“后”客户端页面加载后执行。所以你可以用PHP包含两个脚本,并在页面加载时调用它们(onload函数)。