如何从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()工作得很好,但它没有以我想要的方式调用。
您可能无法直接做到这一点,但是Xajax库非常接近您想要的。我将用一个例子来说明。这是网页上的一个按钮:
<button onclick="xajax_addCity();">Add New City</button>
我们的直觉猜测是xajax_addCity()是一个Javascript函数,对吗?对与错。Xajax允许的一件很酷的事情是,我们没有任何名为xajax_addCity()的JS函数,但是我们有一个名为addCity()的PHP函数,它可以做任何PHP可以做的事情!
<?php function addCity() { echo "Wow!"; } ?>
想想看。我们实际上是从Javascript代码调用PHP函数!
这个过于简化的例子只是为了刺激食欲,更好的解释在Xajax网站上,玩得开心!
我不接受反对者的答案。
如果你发现了一些特殊的软件包可以让它工作,那么你可以自己做!所以,我不相信这些答案。
onClick是一个涉及最终用户的拼凑,因此是不可接受的。
@umesh很接近,但它不是一个独立的程序。以下是这样的(摘自他的回答):
<script type="text/javascript">
function JSFunction() {
alert('In test Function'); // This demonstrates that the function was called
}
</script>
<?php
// Call a JS function "from" php
if (true) { // This if() is to point out that you might
// want to call JSFunction conditionally
// An echo like this is how you implant the 'call' in a way
// that it will be invoked in the client.
echo '<script type="text/javascript">
JSFunction();
</script>';
}
函数在使用之前声明是很重要的。(我不知道“以前”是指“词汇上的以前”还是“时间上的以前”;在上面的示例代码中,两者都是。)
如果你想回显它以便以后执行,这是可以的
如果你想执行JS并在PHP中使用结果,请使用V8JS
V8Js::registerExtension('say_hi', 'print("hey from extension! "); var said_hi=true;', array(), true);
$v8 = new V8Js();
$v8->executeString('print("hello from regular code!")', 'test.php');
$v8->executeString('if (said_hi) { print(" extension already said hi"); }');
如需进一步参考,请参考:
php v8js中的扩展是什么?
如果你想要执行HTML&JS并在PHP中使用输出http://htmlunit.sourceforge.net/是你的解决方案