2013-11-21 24 views
-3
$("#family").dblclick(function(){ 
<?php $_SESSION["album_name"] = "family"; ?> 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#friends").dblclick(function(){ 
<?php $_SESSION["album_name"] = "friends"; ?> 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#work").dblclick(function(){ 
<?php $_SESSION["album_name"] = "work"; ?> 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#others").dblclick(function(){ 
<?php $_SESSION["album_name"] = "others"; ?> 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 

我想用jQuery中的各種dblclick事件來更改會話值。 但它存儲的最後一個值即=「其他」,即使我dblclick點擊其他的ID。如何更改在jQuery中使用不同事件的php的會話值

+1

它不這樣工作。瞭解服務器端和客戶端語言的區別。在這種情況下,你會想使用AJAX。 –

+0

怎麼做呢? – Abhisek

+0

我建議學習javascript和php之間的區別。一旦你收集了一些基本的知識,就回來。 –

回答

0

您無法從JavaScript輸出PHP代碼。與片段,瀏覽器會看到:

$("#family").dblclick(function(){ 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#friends").dblclick(function(){ 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#work").dblclick(function(){ 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 
$("#others").dblclick(function(){ 
location.href = "<?php echo base_url(); ?>index.php/welcome/home_images/"; 
}); 

雖然$_SESSION['album_name']將包含您指定的,在這種情況下的最後一個值:「其他」。

爲什麼?由於PHP在您的服務器中被解釋爲,因此它會生成一個輸出(在您的情況下爲HTML文檔)並將其發送迴應。

你可以使用PHP中的JavaScript,例如,從服務器打印值,如:

// Assuming $foo is 'bar', will output var foo = 'bar'; 
var foo = '<?php echo $_SESSION['foo']; ?>'; 

做你正在嘗試,你需要使AJAX調用到你的服務器做:

$("#family").dblclick(function(){ 
$.ajax({ 
    url: 'http://yourdomain.com/album_name.php', 
    type: 'post', 
    data: {albumName: 'family'}, 
    success: function(response) { 
    // this function will be executed when the server responds successfully to the AJAX call 
    // response will have whatever you send from the server. 
    // In this example: 'ok' 
    alert(response); 
    } 
}); 
}); 

然後,在你的服務器:

// album_name.php 
$whitelist = array('family', 'friends', 'work', 'others'); 

if (isset($_POST['albumName'] && in_array($_POST['albumName'], $whitelist)) 
{ 
    $_SESSION['album_name'] = $_POST['albumName']; 
    echo 'ok'; 
} 
0

您需要使用ajax來實現每個事件的存儲會話。在會話中強調others值的原因是該賦值的最後一個賦值。

0

唯一可以改變一個$_SESSION變量是服務器。因此,您需要向服務器上的PHP腳本發送請求,並讓該腳本更新變量。你不能在客戶端使用JavaScript。

您可以在ALBUM_NAME變量添加到您重定向到並已index.php中尋找它和執行腳本的其餘部分之前更新會話值的URL的查詢字符串...

...?album_name=family 

然後在某個地方的index.php開始...

if (isset($_GET['album_name'])) { 
    $_SESSION['album_name'] = $_GET['album_name']; 
} 

確保此來session_start()呼叫或$_SESSION變量將不存在了。

相關問題