我想从php调用javascript函数,但是在javascript之前包含了php脚本。
<script type="text/javascript">
function myjsfunction(){
//js code
}
</script>
答案 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的水壶控制器,并且当水壶达到沸腾温度时您想在控制器的网页上显示通知,因此可以通过以下消息通知用户茶可以是提供服务。
总体情况如下:
客户端发送请求,服务器回答。您要做的是服务器向客户端发送执行脚本的请求。这在某些事件驱动或异步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函数)。