如何从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网站上,玩得开心!

其他回答

您可能无法直接做到这一点,但是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网站上,玩得开心!

这不可能。PHP是服务器端语言,JavaScript是客户端语言,它们彼此并不了解。您需要一个服务器端的JavaScript解释器(如Aptanas Jaxer)。也许您真正想做的是使用Ajax,如Architecture (JavaScript函数异步调用PHP脚本并对结果进行处理)。

<td onClick= loadxml()><i>Click for Details</i></td>

function loadxml()
{
    result = loadScriptWithAjax("/script.php?event=button_clicked");
    alert(result);
}

// script.php
<?php
    if($_GET['event'] == 'button_clicked')
        echo "\"You clicked a button\"";
?>

现在(2012年2月)有一个新功能。检查在这里

代码示例(取自web):

<?php

$v8 = new V8Js();

/* basic.js */
$JS = <<< EOT
len = print('Hello' + ' ' + 'World!' + "\\n");
len;
EOT;

try {
  var_dump($v8->executeString($JS, 'basic.js'));
} catch (V8JsException $e) {
  var_dump($e);
}

?>

PHP在服务器中运行。JavaScript在客户端中运行。php不能调用JavaScript函数。

像这样试试

<?php
 if(your condition){
     echo "<script> window.onload = function() {
     yourJavascriptFunction(param1, param2);
 }; </script>";
?>