2011-12-23 188 views
0

我有一個加載會話變量PHP頁面:如何將PHP會話變量傳遞給Javascript/jQuery函數?

$user_id = $_SESSION['USER_ID']; 

以前,我在該網頁中包含我的Javascript/jQuery的,並添加<? echo $user_id; ?>設置JavaScript變量:

$(document).ready(function() { 

    $(".button").click(function() { 
     var user_id = <? echo $user_id; ?> 
     var dataString = 'user_id=' + user_id; 
     $.ajax({ 
      type: "POST", 
      url: "../add_user.php", 
      data: dataString, 
     }); 
     return false 
    }); 


}); 

然而,我想把我的Javascript移動到一個單獨的頁面,並從我的PHP頁面調用腳本:

<script src="add_user.js" type="text/javascript"></script> 

如果我這樣做,我不能更長的用戶<? echo $user_id; ?>,那麼將我的PHP變量傳遞給Javascript/jQuery函數的最佳方式是什麼?

+1

你可以有JavaScript文件由PHP處理。例如,命名文件'add_user.php',然後執行''。 – 2011-12-23 16:12:26

+0

我想你應該在你的php生成的頁面中使用一些全局JavaScript變量,或者至少使用隱藏字段來保存session_id值(然後從javascript訪問它) – andreapier 2011-12-23 16:14:02

+0

爲什麼不使用href屬性呢?將完整的網址添加到鏈接,並使用它。 – Ignas 2011-12-23 16:14:07

回答

3
<script> 
var user_id = <?php echo $user_id; ?> 
</script> 
<script src="add_user.js" type="text/javascript"></script> 

現在您可以在您的add_user.js文件中使用user_id。另外,我會建議against using PHP short tags

+0

缺少*某些服務器上的功能*不是不使用它的原因。許多主機仍然運行PHP 5.1,我們是否應該避免使用5.3特性? – 2011-12-23 16:30:28

+0

短標籤取決於正確的配置設置,如果您打算將項目部署到不同的服務器,您應該習慣於使用標準的<?php'標籤,因爲它可以被理解爲任何方式。 「看起來像一小部分工作來確保互操作性」 – 2011-12-23 16:36:31

8

您可以配置您的網絡服務器,將.js文件視爲PHP腳本,這樣可以讓您從.js文件中執行您的PHP代碼。

但是,如果這是不能接受的,你總是可以這樣做:

<script type="text/javascript">var user_id = <?php echo json_encode($user_id) ?>;</script> 
<script type="text/javascript" src="add_user.js"></script> 

在你的PHP腳本的級別上定義的變量,然後包括外部的.js如常。

如果$ user_id始終是數字,那麼json_encode()位是過度殺毒,但我已經養成了使用該動態生成JS代碼的習慣。使用json_encode保證你插入一個語法正確的JS代碼片段。

0

只需在另一邊開始會話。考慮到JS數據可能被破壞,甚至故意並可能被利用(安全),它也更安全。

開始會話後 - 在那裏讀取數值。

當然,這對同一虛擬主機上的腳本有效。

2

您仍然能夠引用您的varible在外部JS文件

<script type="text/javascript"> 
var yourvar = <? echo $user_id; ?>; 
</script> 
<script src="add_user.js" type="text/javascript"></script>