如何从 PHP 调用 JavaScript 函数?

新手上路,请多包涵

如何从 PHP 调用 JavaScript 函数?

<?php

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

以下代码来自 xyz.html (单击按钮),它在外部 xyz.js 中调用 wait() 。此 wait() 调用 wait.php。

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;
  }
}

wait.php

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

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

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

原文由 Zeeshan Rang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 821
2 个回答

就 PHP 而言(或者实际上是一般的 Web 服务器),HTML 页面只不过是一个大字符串而已。

您可以使用 PHP 之类的语言完成的所有花哨的工作——从数据库和 Web 服务读取等等——最终的最终目标是完全相同的基本原则:生成一串 HTML*。

在 Web 浏览器加载之前,您的大 HTML 字符串不会变得比这更特别。一旦浏览器加载页面,所有其他魔法 就会 发生——布局、盒子模型、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 等。

原文由 Peter Bailey 发布,翻译遵循 CC BY-SA 4.0 许可协议

我总是只使用 echo "<script> function(); </script>"; 或类似的东西。从技术上讲,您并没有在 PHP 中调用该函数,但这已经很接近了。

原文由 GSto 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题