2012-06-10 70 views
1

我有一個php文件作爲我的主頁,並且我想將一個php變量傳遞給一個用php繪製的外部js文件。我有幾個php'd外部js文件工作正常,但「不」依賴於主頁上的php。有些依賴於主頁面上的JavaScript,但我想遠離這一點。我的意圖是通過限制JavaScript的數量,通過增加動態性,並允許更好的網站管理來保持主頁的清潔。將一個php變量傳遞給一個動態php'd外部js文件

也許如果我理解外部文件與調用頁面的自然關係,我知道。例如,下面的代碼是我當前的一些代碼,它假定外部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 
?> 

回答

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); 
+0

謝謝,它工作得很好!我現在可以合併多個外部。另外,我確實需要包含connection.php和functions.php。 – asobe

+0

沒問題!只要小心你正在發送的內容。如果您使用$ _GET方法,則在HTML源代碼中清晰可見?foo = bar查詢!這意味着任何人都可以改變它,如果他們想要的話。 – TylerH4

相關問題