从php调用Javascript函数

时间:2015-11-24 15:54:11

标签: javascript php

我已经对帖子和示例做了很多尝试 - 但我无法理解如何做到这一点。我在我的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>

在身体中,我使用了这样的变量:

  <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(),并传递getted id $idencol

有人可以告诉我怎么做?

提前致谢

3 个答案:

答案 0 :(得分:1)

您需要在标头中调用js函数agicol(),该标头使用身体中由php设置的js变量$idencol(非常糟糕的变量名称)。

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

<?php
   if(isset($_GET['id']))
   {
      $idencol = $_GET['id'];
      echo "<script>";           
      echo "\$idencol = $idencol;";   //Set JS global variable you expect in the function
      echo "agicol();";               //Call the function
      echo "</script>";

   }
?>

这将解决您当前的问题。

但是有很多更好的方法可以做到这一点。您可以将JS函数设置为接受参数并通过该函数发送id,而不是使用名称错误的全局变量。

function agicol(id) {
    scheduler.clearAll();
    scheduler.load("ret_l.php?connector=true&dhx_filter[IDCol]=" + id, "json");
    }

...在正文中的PHP中

$idencol = $_GET['id'];
echo "<script>agicol($idencol);</script>";

答案 1 :(得分:0)

load将从您正在加载的文档中删除<head>(或者更确切地说,将提取<body>的内容并丢弃其他所有内容)。

或者:

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

答案 2 :(得分:0)

您可以尝试以下内容:INDIRECT否则,您应该更新您的javascript函数以传递参数。