$("#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 事件更改会话值。但它存储了最后一个值 ie= "其他",即使我点击了其他一些 id。
你不能从 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 文档(并在响应中发送它。
例如,您可以在 JavaScript 中使用 PHP 从服务器打印值,如下所示:
// 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';
}
您需要使用 ajax 来实现每个事件的存储会话。在会话中others
值的原因,它是与之相关的最后一个分配。
唯一可以更改$_SESSION
变量的是服务器。因此,您需要向服务器上的 PHP 脚本发送请求,并让该脚本更新变量。你不能在客户端用JavaScript做到这一点。
您可以将 album_name 变量添加到要重定向到的 URL 的查询字符串中并具有索引.php在执行脚本的其余部分之前查找它并更新会话值......
...?album_name=family
然后在索引开头的某个地方.php...
if (isset($_GET['album_name'])) {
$_SESSION['album_name'] = $_GET['album_name'];
}
确保这是在调用session_start()
之后进行的,否则$_SESSION
变量将不存在。