2014-02-21 92 views
2

將服務器端PHP變量傳遞給Javascript的最佳方式是什麼?將服務器端變量傳遞給PHP中的PHP

爲了簡化問題,假設我們在PHP($phpVar)一個變量,我們希望它的值賦給

JavaScript文件的HTML被加載JavaScript變量(jsVar) - 它們不是建立動態!

有些耐人尋味:

1.打印與PHP加載JavaScript文件之前:

<script language="javascript" type="text/javascript"> 
     var jsVar= <?php echo $phpVar?>; 
    </script> 

2.存儲在DOM(在隱藏要素)

一個。在PHP中:

<span data-name="phpVar" data-value="<?php echo $phpVar?>"></span> 

b。閱讀Javascript文件(假設jQuery的可用):

var jsVar= $('span[data-name="phpVar"]').attr('data-value'); 

3.詢問其與AJAX頁面加載

Obviosly不是最好的解決方案了。不適合於所有情況,而且需要額外的請求......

結論:

  • 他們都顯得難看,我...有沒有更好的方法嗎?
  • 有沒有任何框架可以處理這種依賴性?請儘量減少服務器重新配置。
+0

我使用選項1 –

+0

解決方法1,如果該值不從用戶交互,解決方案3否則dinamically依賴。你爲什麼不喜歡他們? – dirluca

+0

AJAX是最好的方法,你認爲在哪種情況下,Ajax不好? –

回答

1

這取決於情況,但通常情況下,主要是使用第一種情況。

<script language="javascript" type="text/javascript"> 
    var jsVar = '<?php echo $phpVar?>'; 
</script> 
2

的最好的辦法是提供「內部API」通過AJAX從客戶端請求:但是,如果你傳遞一個字符串不要忘了引號。這樣做你可以保持你的雙方分開。

在此之後,最快的方法是在共享文件中打印要分享的值(如您在問題中所寫)。

作爲最後要注意:如果你繼續用第二種方式,我建議你

json_encode() 

一個真正有用的方法從PHP傳遞數組和對象的JavaScript。

所以,如果你有你的PHP數組:

$array = array("a" => 1, "b" => 2); 

<script language="javascript" type="text/javascript"> 
    var js_array= <?php echo json_encode($array) ; ?>; 
</script> 
+0

這就是@DanFromGermany所提供的 –

+0

@Victor誰?我只寫了我所知道的最好的。我不知道其他人是否已經提供了它。你能向我們提供他的答案嗎?謝謝。 –

+0

你可以閱讀[評論](http://stackoverflow.com/questions/21930987/pass-server-side-variables-to-javascript-in-php#comment33219972_21930987):) –