gpt4 book ai didi

php - 如何从 PHP 调用 JavaScript 函数?

转载 作者:IT老高 更新时间:2023-10-28 11:40:47 25 4
gpt4 key购买 nike

如何从 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>"; 

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

loadxml() 在其他方面工作正常,但它没有按我想要的方式调用。

最佳答案

就 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 等

关于php - 如何从 PHP 调用 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1045845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com