将php变量传递给动态php'外部js文件

时间:2012-06-10 23:34:36

标签: php javascript google-maps external

我有一个php文件作为我的主页,我想将php变量传递给用php绘制的外部js文件。我有几个php'd外部js文件工作正常,但“不”依赖于主页上的PHP。有些依赖于主页上的JavaScript,但我想摆脱它。我的目的是通过限制JavaScript的数量,增加动态,并允许更好的站点管理来保持主页清洁。

也许如果我理解外部文件与调用页面的自然关系,我不知道。例如,下面的代码是我当前的一些代码,它假设外部js脚本是php文件,从主页面看到“functions.php”和$ sel_entity。但是,它似乎没有那样工作。我猜也许functions.php需要包含在外部文件中,但没有使用$ sel_entity的线索。我知道我可以将变量回显到主页面上的js变量,但是我的计划需要更具动态性的东西。这里的任何帮助都会很棒。谢谢!

例如,主页面如下:

<?php require_once("includes/connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php  $sel_entity = $_GET['entity']; ?>
...//bunches of code 
<script type="text/javascript" src="javascripts/lines.php"></script>

然后js文件lines.php就像:

<?php
 Header("content-type: application/x-javascript");
  $job_set = get_jobs($_GET['entity']);                     
  while ($job = mysql_fetch_array($job_set)) {
    echo "
        var jobLine";
echo $job["Project_ID"];
echo " = [new google.maps.LatLng(lati, longi),
";
$jobIdCoords = get_jobCoord_by_id($job["Project_ID"]);
echo " new google.maps.LatLng(";
echo $jobIdCoords['lat'] . ", ";
echo $jobIdCoords['long'] . ")]; ";
                    }
  ...// bunches more code
?>  

1 个答案:

答案 0 :(得分:2)

最好的方法是使用$ _SESSION,但一定要在“js”文件中启动会话。

<?php
session_start();
$_SESSION["foo"] = "bar";
?>
<script type="text/javascript" src="javascripts/lines.php"></script>

然后是JS文件:

<?php
Header("content-type: application/x-javascript");
session_start();
echo 'var foo = "'.$_SESSION["foo"].'";';
?>
alert(foo);

但是,你应该能够像这样使用$ _GET:

<script type="text/javascript" src="javascripts/lines.php?foo=bar"></script>

和“JS”文件:

<?php
Header("content-type: application/x-javascript");
echo 'var foo = "'.$_GET["foo"].'";';
?>
alert(foo);