2011-06-30 70 views
1

我試圖爲php會話分配JavaScript變量的值。請參閱下面我的代碼 -在javascript標記中的PHP標記

<script type="text/javascript"> 
<?php $_SESSION['historyClass'] = "";?> 

var myClass = $(this).attr("class"); 
if(myClass == 'trigger'){ 
    <?php $_SESSION['historyClass'] = "trigger"; ?> 
} 
else{ 
    <?php $_SESSION['historyClass'] = "trigger active"; ?> 
} 

alert('<?php echo $_SESSION['historyClass']; ?>') 

</script> 

在MyClass的變量,我得到2個值 1)觸發 2)觸發主動

不管我會得到的價值,我想將其存儲在PHP會話。但是當我提醒會話價值時,它總是讓我「觸發主動」。這意味着它總是會去其他部分。我已經通過警報檢查了「如果」情況,控制在「如果」和「其他」部分正確執行。

什麼問題?難道我做錯了什麼?

在此先感謝。

+0

[將js變量傳遞給php變量](http://stackoverflow.com/questions/4716177/pass-a-js-variable-to-a-php-variable) –

回答

3

首先處理PHP,然後執行javascript,所以不可能直接賦值給php變量。

相反,您可以發送來自JavaScript(Ajax)的http請求到php腳本來保存您的數據。

+0

@All:好的..得到了重點。感謝您的快速回復......實際上我不想保存數據。無論我在會話中獲得什麼價值,我都希望在刷新或填充頁面時將該類應用於特定的div。所以我只有一個解決方案來存儲會話中的myClass值。 –

0

這是行不通的。 PHP在服務器上執行,在客戶端上執行JS。這意味着php在解析JS之前運行。如果你想從javascript(特別是jQuery庫及其「.get()」函數)運行PHP,我建議你看看Ajax。

發生了什麼事是PHP解析,並沒有看到任何JS,所以它正常運行,並設置會話觸發,然後觸發活動。然後javascript在客戶端上,而客戶端沒有看到任何PHP代碼,所以不運行它。

0

這不會工作。 php代碼在服務器端運行,js - 在客戶端上運行。因此php在頁面顯示給用戶之前執行。這意味着首先執行$_SESSION['historyClass'] = "trigger";$_SESSION['historyClass'] = "trigger active";顯然值將是trigger active

0

是的,你做錯了什麼。

JavaScript運行在客戶端和服務器端的php。所以你的代碼首先在服務器端運行,然後在客戶端運行。這就是爲什麼你不能像你這樣做。將JavaScript數據傳輸到PHP腳本的常用方法是將值寫入隱藏字段,以便將其提交給服務器。

只是創建一個隱藏字段,並從JavaScript和值填充它

<script type="text/javascript"> 
    function valToPHP(name,value){ 
     document.getElementById(name).value = value; 
    } 
</script> 
... 
</head> 
<body> 
<input type="hidden" id="myField" name="myField" value="" /> 
... 

然後你可以看它在你的PHP腳本像

$_GET["myField"] or $_POST["myField"] 

這取決於你的窗體的方法

+0

感謝您的解決方案。但每次我沒有提交表格。我在我的頁面上有很多鏈接,因此對於每個鏈接都無法發送隱藏值。 –