【问题标题】:How to call PHP function from Javascript (ideally without AJAX) [duplicate]如何从 Javascript 调用 PHP 函数(最好没有 AJAX)[重复]
【发布时间】:2017-09-12 11:55:07
【问题描述】:

不太了解 AJAX。这就是问题所在。

我正在读取填充一些全局变量的 PHP 函数中的数据库,我可以访问这些变量,但我需要定期调用 php 函数。

<?php

function thatIwant()
{
  //read database
 return 10;
}

echo("
<script>

function refreshDiv()
    {
     //// this is where I need to call the above function.
     var refresher = setTimeout('refreshDiv()', 2000);
    }
</script>
");
?>

【问题讨论】:

  • 您必须使用 AJAX。客户端代码只能通过 HTTP 请求调用服务器端代码。
  • “不太了解 AJAX。” That is fairly easily remedied.
  • 另外,使用字符串参数调用setTimeout 是不好的做法。使用函数引用:var refresher = setTimout(refreshDiv, 2000);

标签: javascript php html


【解决方案1】:

如果不使用 XmlHttpRequest,您将无法从 Javascript 定期调用 PHP 函数。 PHP 在第一次请求页面时执行。使用 XHR,您可以执行以下操作:

function refreshDiv() {
    setTimeout(function() {
        var xhr = new XmlHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState === 4 && this.status === 200) {
                document.getElementById("refreshDiv").innerHTML = 
xhr.responseText;
            }
        };

        xhttp.open("GET", "yourPHPEndpoint.php", true);
        xhttp.send();
    }, 1000);
}

这将允许您连续查询您的 PHP 文件,并使用查询结果更新 div 的内容。这也可以通过带有$.ajax$.get 的jQuery 来完成。

【讨论】:

  • 谢谢 - 上面的代码可以像 JS 中的任何其他函数一样使用吗?
  • @SamBrown 只需将其添加到 &lt;script&gt; 块中即可。当它起作用时,一定要接受一个答案。希望这对您有所帮助!
  • 如何在函数 refreshDiv() 中使用上述代码
  • 还有什么是 yourDiv 的代码
  • @SamBrown 您不需要,但您可以将其复制到refreshDiv。不过,请确保您只调用一次,因为它会创建一个每秒会自行触发一次的超时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2012-11-29
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多