发布日期:2018-03-26
在PHP中如何调用一个JavaScript函数?+ 查看更多
在PHP中如何调用一个JavaScript函数?
+ 查看更多
发布日期:2018-03-26 14:12
分类:PHP
浏览次数:102
在PHP中如何调用一个JavaScript函数呢?例如
<?php jsfunction(); // or echo(jsfunction()); // or // Anything else?
下面的代码是放在xyz.html的一个点击按钮上的,它调用了一个在外部xyz.js的wait()函数。
这个wait()函数通过AJAX方式调用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; } }
下面的代码是放在xyz.html的一个点击按钮上的,它调用了一个在外部xyz.js的wait()函数。
这个wait()函数通过AJAX方式调用wait.php。
wait.php的代码如下:
<?php echo "<script> loadxml(); </script>";
这个loadxml()函数用同样的方法在另一个php文件中调用。loadxml()函数在某些方面工作地挺好,但并没有以我想要的方式被调用。
回答
简而言之,我们无法在PHP中调用Javascript。因为Javascript是在浏览器或者Nodejs这样的框架中运行的。而不是在Apache这种PHP运行环境中被调用的。
就PHP语言来说(或者其它的web服务器语言),一个HTML页面并不会比一个大的字符串更复杂。在读取数据库和web服务器或其他的数据时,你可以用程序设计语言(例如php)来完成你所想要的任何工作,根本的方法就是牢记一个基本原则:生成HTML字符串。你庞大的html字符串并不会变成比一个web浏览器上加载的数据更多的东西。当浏览器开始加载页面时,所有神奇的东西都开始发生了:布局,盒模型,DOM以及其他东西,包括JavaScript的执行。所以,你并不需要“在php中调用JavaScript”,你应该“在你的输出中要包括javascript的函数调用”。
如果你需要使用PHP输出Javascript脚本,有很多方法来实现,这里我只列出一些。
使用php:
使用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做的工作:
然后,你要明白当你从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 do // 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等。