2012-07-10 76 views
2

我正在尋找動態加載已解析爲PHP的JavaScript,以便我能夠將PHP變量傳遞給JavaScript,然後將此文件加載到主PHP文檔中。我有一個名爲myscript.js.php的文檔,其中包含JavaScript和PHP。我試圖將其加載到使用jQuery的getScript加入這樣的主文檔:如何動態加載已被解析爲PHP的Javascript?

$.getScript("myscript.js.php", function() { 
       alert('loaded script.'); 
      }); 

嘗試失敗 - 我假設,因爲文件上的PHP擴展的。無論如何動態加載包含PHP的JavaScript?我有幾個會話變量,我正在尋找通過JavaScript將經常更新,創造一個JavaScript的需要重新加載。

+4

是什麼myscript.js.php輸出? – Austin 2012-07-10 03:09:00

+0

它輸出一組由PHP會話變量設置的javascript變量。 – beatsforthemind 2012-07-10 03:26:18

+0

我們可以看到它嗎?沒有PHP的實際瀏覽器輸出。 – Mahn 2012-07-10 03:43:26

回答

1

您的代碼塊看上去語法正確。你檢查了ajax調用的狀態嗎? 你必須設置一個頭在返回PHP頁面,

header('Content-Type: text/javascript; charset=UTF-8'); 

否則jQuery將因爲它的預期要返回一個腳本文件拋出一個錯誤和頭不匹配。

看看這個.. http://api.jquery.com/jQuery.getScript/#comment-104973932

+0

這可能是這種情況,因爲否則它確實看起來正確。 – Mahn 2012-07-10 03:45:25

+0

我仍然無法返回該腳本的頂部「myscript.js.php」 – beatsforthemind 2012-07-10 17:38:30

1

你將不得不使用AJAX來做到這一點。

您可以將php腳本輸出的數據存儲到數組中,在php中implode數組,然後回顯內部陣列。

然後,您可以獲取ajax函數返回的字符串並將其分解爲一個數組,然後您將嘗試將值保存到變量中。

您可以用jQuery做到這一點:http://api.jquery.com/jQuery.ajax/

+0

不一定,理論上服務器上的動態生成的JavaScript文件應該可以很好地使用getScript。 – Mahn 2012-07-10 03:42:27

1

像動態創建的JavaScript可能不理想。你最好打印從PHP的原始數據到一個變量,然後你的腳本可以使用此數據:

<?php 

$config = array(
    // values 
); 

?> 

<script>var config = <?php json_encode($config); ?>;</script> 
<script src="myscript.js"></script> <!-- uses config data -->