如何从PHP调用JavaScript函数?

2022-08-30 00:53:33

如何从PHP调用JavaScript函数?

<?php

  jsfunction();
  // or
  echo(jsfunction());
  // or
  // Anything else?

下面的代码来自 xyz.html(单击按钮时)它在外部 xyz.js中调用 a。这需要等待.php。wait()wait()

function wait() 
{
  xmlhttp=GetXmlHttpObject();
  var url="wait.php"; \
  xmlhttp.onreadystatechange=statechanged; 
  xmlhttp.open("GET", url, true); 
  xmlhttp.send(null);
} 

function statechanged()
{ 
  if(xmlhttp.readyState==4) {
       document.getElementById("txt").innerHTML=xmlhttp.responseText;
  }
}

等等.php

<?php echo "<script> loadxml(); </script>"; 

其中以相同的方式从另一个PHP文件调用代码。loadxml()

否则工作正常,但它没有被按照我想要的方式调用。loadxml()


答案 1

就PHP而言(或者实际上是一般的Web服务器),HTML页面并不比一个大字符串更复杂。

你可以用PHP等语言做的所有花哨的工作 - 从数据库和Web服务中读取以及所有这一切 - 最终目标是完全相同的基本原则:生成一串HTML *。

您的大HTML字符串在由Web浏览器加载之前不会变得比这更特别。一旦浏览器加载页面,所有其他魔术就会发生 - 布局,盒子模型的东西,DOM生成以及许多其他事情,包括JavaScript执行。

所以,你不要“从PHP调用JavaScript”,你“在你的输出中包含一个JavaScript函数调用”。

有很多方法可以做到这一点,但这里有一对夫妇。

仅使用 PHP:

echo '<script type="text/javascript">',
     'jsfunction();',
     '</script>'
;

从 php 模式转义为直接输出模式:

<?php
    // some php stuff
?>
<script type="text/javascript">
    jsFunction();
</script>

您不需要返回函数名称或类似的东西。首先,停止手动编写 AJAX 请求。你只是在让自己很难受。获取jQuery或其他优秀的框架之一。

其次,了解一旦从AJAX调用收到响应,您已经将执行javascript代码。

下面是一个我认为你正在使用jQuery的AJAX做什么的例子

$.get(
    'wait.php',
    {},
    function(returnedData) {
        document.getElementById("txt").innerHTML = returnedData;

        //  Ok, here's where you can call another function
        someOtherFunctionYouWantToCall();

        // But unless you really need to, you don't have to
        // We're already in the middle of a function execution
        // right here, so you might as well put your code here
    },
    'text'
);

function someOtherFunctionYouWantToCall() {
    // stuff
}

现在,如果您不准备将函数名称从PHP发送回AJAX调用,您也可以这样做。

$.get(
    'wait.php',
    {},
    function(returnedData) {
        // Assumes returnedData has a javascript function name
        window[returnedData]();
    },
    'text'
);

*或JSON或XML等。


答案 2

我总是只使用或类似的东西。从技术上讲,您不是在PHP中调用该函数,但这与您将要获得的函数一样接近。echo "<script> function(); </script>";