【问题标题】:call JavaScript function from a php script从 php 脚本调用 JavaScript 函数
【发布时间】:2016-10-04 18:16:54
【问题描述】:

我想知道这是否是我能做的。我有一个 PHP 脚本需要调用我在主 index.php 中定义的函数。

在我的另一个 PHP 文件中:

echo "<script>ShowModal('PopUpNameItem','closeNameItem');</script>";

在我的主要 index.php 中,我有这个功能。我实际上如何从单独的脚本中调用它?通常你会使用这样的东西,但由于我的文件是 .php,我可以这样做吗?

<script type="text/javascript" src="ajax.js"></script>

这是我要调用的函数

function ShowModal(popup, closeBtn) {
        var modal = document.getElementById(popup);
        var span = document.getElementsByClassName(closeBtn)[0];
        modal.style.display = "block";
        span.onclick = function() {
            modal.style.display = "none";
        }
        if (modal != "PopUpNameItem") {
            window.onclick = function(event) {
            if (event.target == modal) {
                modal.style.display = "none";
            }
        }
    }
}

【问题讨论】:

  • 调用它的上下文是什么? AJAX 调用、页面加载还是其他?
  • 我刚刚复制了一个用于我的代码的代码,在我的情况下它可能需要是 index.php,但我该怎么做呢? @RamenChef
  • 我认为,合理的方法是这样的:1)创建一个纯 html/javascript 解决方案来满足您的需求(验证它是否有效)。 2) 让您的 PHP 端在输出时生成完全相同的 index.html。
  • @VladimirM 在发帖之前我已经让它工作了。只有当我尝试从我的 php 脚本中调用它时它才不会显示。

标签: javascript php function


【解决方案1】:

好的。我想现在可以看到清晰的画面了。

没有。这不可能。您不能不能从服务器端 PHP 脚本调用客户端 javascript 方法。

在 web 应用程序中,有两个方面:

  • 客户端(在您的情况下是它的网络浏览器,可与从服务器接收的 html/css 和 javascript + 数据一起使用)
  • 与任何东西(在您的情况下是 PHP)一起工作并生成 html/css、javascript 和数据的服务器端。

现在,您在服务器端的 index.php 由 Web 服务器处理并生成由服务器发送到客户端的 index.html。客户端打开此文件并加载/执行其中定义的所有脚本、样式。它创建了文档结构。现在所有这些都存在于客户端。

但是,服务器端没有直接链接到您的客户端上下文。因此,作为服务器处理的结果,有两种方法可以运行此方法。

1) 向服务器发送一个ajax请求,并根据结果执行方法。

2) 如果你不想处理ajax cal 逻辑,你可以做一个脚本插入的方法。它的工作原理是,当按下按钮时,您会执行以下操作:

var scriptRef = document.createElement('script');
scriptRef.setAttribute('src','url_to_script.php');
document.head.appendChild(scriptRef);

它将做什么,它会动态地将脚本标签附加到您的文档中,并根据您的 php 脚本输出加载脚本内容。在那里您可以决定启动该方法或执行其他操作。

但是,脚本插入有点让人头疼,不应该在长时间运行的页面上使用(在我看来),因为它实际上会在您每次按下按钮时添加一个新脚本。您有责任跟踪并删除它。

【讨论】:

  • 感谢您的回答。我不会使用你的方式,但它确实引发了顿悟,所以我确实知道现在该做什么。谢谢你
  • Vladimir,当您需要每天运行 js 函数和每天运行 php 脚本时,您建议的最佳选择是什么?你说不可能从 PHP 调用 js 函数。我怎样才能最好地做到这一点?
  • @nclsvh 你好。首先,这是一个不同的问题,需要单独的线程和更多的上下文。没有更多的上下文,甚至很难想象用例。无法从服务器端脚本调用在浏览器上运行的 JS。但是您可以使用 websockets 或客户端轮询来触发客户端,例如。
【解决方案2】:

只要您以 JavaScript 格式正确显示您的函数 你可以打电话:

<script type="text/javascript" src="ajax.php"></script>

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2013-05-25
    • 1970-01-01
    • 2020-03-16
    相关资源
    最近更新 更多