从php调用Javascript函数

从php调用Javascript函数,javascript,php,Javascript,Php,我用帖子和例子做了很多尝试,但我不知道如何做到这一点。我的php文件的头部有一个函数: ..... <script type = "text/javascript" language="javascript"> function agicol() { scheduler.clearAll(); var idname$ = $idencol; scheduler.load("ret_l.php?connector=true&d

我用帖子和例子做了很多尝试,但我不知道如何做到这一点。我的php文件的头部有一个函数:

    .....
    <script type = "text/javascript" language="javascript">
    function agicol() {
    scheduler.clearAll();
    var idname$ = $idencol;  
    scheduler.load("ret_l.php?connector=true&dhx_filter[IDCol]="+idname$,"json");
    }
 </script>  
 </head>
。。。。。
函数agicol(){
scheduler.clearAll();
变量idname$=$idencol;
load(“ret_l.php?connector=true&dhx_filter[IDCol]=”+idname$,“json”);
}
在主体中,我使用了这样一个变量:

  <body bgcolor="#C0DFFD" onLoad="init();">
  <?php
   if(isset($_GET['id']))
   {
   $idencol = $_GET['id'];
   echo "<script>alert($idencol);</script>";
   // Alert works properly
   // $idencol contains id sended
   }
   ?>

因此,我应该调用函数
agicol()
,并传递gettedid
$idencol

有人能告诉我怎么做吗


提前感谢

加载
将从正在加载的文档中删除
(或者更确切地说,将提取
的内容并放弃所有其他内容)

要么:

  • 在整个站点加载的JS文件中定义函数(这通常是最好的方法)
  • 将脚本移动到正文中
  • load
    替换为
    ajax
    并手动提取您关心的各种数据位

您可以尝试以下方法:
echo“agicol();”
否则,您应该更新javascript函数以传递param。

您需要调用头中的js函数
agicol()
,该函数使用php在主体中设置的js变量
$idencol
(此处的变量名非常糟糕)

代码中的问题是PHP部分没有正确设置预期的js变量。像这样更改您的PHP部分(注意我使用的escape\$I):

。。。在PHP中

$idencol = $_GET['id'];
echo "<script>agicol($idencol);</script>";
$idencol=$\u GET['id'];
回声“agicol($idencol);”;

当然只需将
alert($idencol)
替换为
agicol($idencol)
您在上一页没有传递
id
。您正在传递
连接器
dhx\U过滤器[IDCol]
,这两个过滤器都不会为您生成
$\u GET['id']
。@MarcB谢谢,但我不清楚。我试图更好地解释:在主页上,我点击链接,将id传递到一个新页面,我在其中有上面的代码。加载时,此页将正确发送id。现在,我想把这个id和call函数传递到这个页面的头部。但是Chris Evans建议的方法不起作用。我得到了这个错误“在….中调用未定义的函数agicol()”,然后你需要把
函数agincol(){…}
的东西也放到那个页面中,这意味着你最好把它放到一个外部的.js文件中并链接到两个页面。我知道有很多方法可以得到这个结果,然而,从php代码调用这个函数是不可能的吗?@Jayelef-因为php与JavaScript在不同的计算机上执行,是的,这是不可能的。您必须将JavaScript交付给客户端,并让客户端执行它。您当前的方法将JavaScript交付给客户端,然后丢弃包含您希望执行的一半代码的
。感谢您的解释@quentin考虑我提出的替代方法。你至少应该这样做。还要了解数据从php传递到js的方式。是的,我刚刚使用了您建议的第二种方法,效果很好。与其称之为“传递数据”,我想说的是“php正在用硬编码的值组装js脚本”。这里就是这样,对不起。有时我无法翻译我的想法,所以我使用了不好的术语或表达方式!
function agicol(id) {
    scheduler.clearAll();
    scheduler.load("ret_l.php?connector=true&dhx_filter[IDCol]=" + id, "json");
    }
$idencol = $_GET['id'];
echo "<script>agicol($idencol);</script>";