2013-01-14 40 views
0

我看過了,並且會繼續瀏覽更多論壇帖子,但是我還沒有找到解決這個簡單問題的方法。在一個單獨的.js文件中使用我在.php文檔中創建的變量

足夠簡單,我從服務器獲取一些數據,我在我的.php文件中處理這些數據並創建四個變量。我的變量是(爲了簡單)$ v1,$ v2,$ v3,$ v4。現在我還有一個.js文件,我想要使用這四個變量。具體來說,我想在谷歌地圖標記中使用這些變量(但如果您不知道,則不必回答),但是如何我可以抓住這些變量並在我的谷歌地圖標記(.js文件)中使用它們的值嗎?

+0

還你看着JSON編碼和使用AJAX拉離,結果? – ryanc1256

回答

1

如果您在外部腳本加載之前在腳本標記中聲明瞭全局變量,則外部腳本中將提供該變量。

<html> 
<head> 
    <script type="text/javascript"> 
    var v1 = <?=$v1?>, 
     v2 = <?=$v2?>, 
     v3 = <?=$v3?>, 
     v4 = <?=$v4?>; 
    </script> 
    <script type="text/javascript" src="js/someExternalScript.js"></script> 
</head> 
<body> 
    Some body 
</body> 
</html> 

如果您願意,還可以使用腳本標記在另一個頁面中定義變量,例如javascript外部文件。按照腳本出現在源代碼中的順序,後面的腳本將可以訪問以前腳本中的全局變量(這裏的全局意味着沒有在函數/閉包範圍內定義)。例如,大多數人將jquery作爲外部腳本包含,並且所有包含jquery的腳本都可以訪問它。

0

你可以做兩件事情:

  1. 解決這個問題正確。
  2. 半屁吧。

我會先給出第二條指令,因爲它應該給你一些關於這兩種技術如何相關的未知因素。

半屁股它

這是假設你正在寫的腳本不是基於Ajax的 - 只是一些標準生成頁面與 - PHP,包括.js文件。

  1. 寫一個PHP文件,將生成的Javascript內容:

    // /js/vars.php 
    $v1 = $v2 = $v3 = $v4 = time(); 
    
    header("Content-type: text/javascript"); 
    
    echo "window.Variables = { 
        v1: $v1, 
        v2: $v2, 
        v3: $v3, 
        v4: $v4 
    }"; 
    

    (注意,如果變量是字符串,你應該添加引號)

  2. 要求在<head>該文件之前你想使用變量的文件。

    <script type="text/javascript src="/js/vars.php"> 
    
  3. 在您的.js文件中使用它。

    var smth = Variables.v1 + Variables.v2; 
    

如何,這是一個禁忌的原因有很多,他們當中:由PHP文件生成

  • JavaScript是不容易維護。
  • 全局JS命名空間有點混亂。
  • Ajax不能很好地發揮作用。

正確

  1. 寫一個PHP文件,將生成JSON數據:

    // /js/vars.php 
    $v1 = $v2 = $v3 = $v4 = time(); 
    
    $jsonArr = array(
    'v1'=> $v1, 
    'v2'=> $v2, 
    'v3'=> $v3, 
    'v4'=> $v4 
    ); 
    header("Content-type: application/json");    
    echo json_encode($jsonArr); 
    
  2. 寫一些JavaScript代碼,將拉動使用Ajax的數據。例如。使用jQuery:

    $.getJSON('js/vars.php', function(data) { 
        alert(data.v1+data.v2); 
    }); 
    
相關問題