【问题标题】:How to fetch previous link value from session when clicked on multiple links单击多个链接时如何从会话中获取先前的链接值
【发布时间】:2016-03-23 16:58:49
【问题描述】:

我正在尝试使用 AJAX 和 PHP 中的会话来获取以前单击的链接值。但我只得到当前值。这是我正在使用的代码。

<?php
session_start();
//session_destroy();

if(isset($_POST['getpage'])){
    $page = $_POST['pagename'];
    $_SESSION['current'] = $page;

    if(!isset($_SESSION['previous'])){
        $_SESSION['previous'] = "null";
        $_SESSION['previousnew'] = $_SESSION['current'];
    }
    elseif($_SESSION['previous'] == "null"){
        $_SESSION['previous'] = $_SESSION['previousnew'];
        $_SESSION['previousnew'] = $_SESSION['current'];
    }
    else
        $_SESSION['previous'] = $_SESSION['previousnew'];

    print_r($_SESSION);
    exit();
}

$value = 5;

$arr = array("file1","file2","file3","file4");
foreach ( $arr as $k => $v){
    echo "<a href='".$v.".php' onclick='return createpage(\"$v\");'> ".$v." </a><br>";
}
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
function createpage (page){
    var name = page+".php";
    $.post("pageone.php",{getpage : 1,pagename:name},function(data){
        alert(data);
    });
    return false;
}
</script>

更新

<?php
session_start();
//session_destroy();

if(isset($_POST['getpage'])){
$page = $_POST['pagename'];
$_SESSION['current'] = $page;

if(!isset($_SESSION['previous'])){

$_SESSION['previous'] = "null";
$_SESSION['previousnew'] = $_SESSION['current'];
}
elseif($_SESSION['previous'] == "null"){
 $_SESSION['previous'] = $_SESSION['previousnew'];
 $_SESSION['previousnew'] = $_SESSION['current'];
}
else $_SESSION['previous'] = $_SESSION['previousnew'];



$file_pointer = fopen( $_POST['pagename'], 'w' );

$string = '<?php include_once("pageone.php");?>
<?php $var = "'.$_POST["pagename"].'";?>
<?php echo $var;?>
<?php echo "'.$_SESSION["previous"].'";?>
';

fwrite( $file_pointer, $string );

fclose($file_pointer);
exit();
}



$value = 5;

$arr = array("file1","file2","file3","file4");


foreach ( $arr as $k => $v){
echo "<a href='".$v.".php' onclick='return createpage(\"$v\");'> ".$v." </a><br>";
}

?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
function createpage (page){
var name = page+".php";
$.post("pageone.php",{getpage : 1,pagename:name},function(data){
    //alert(data);
});
return true;
}
</script>

在这里,我正在创建新页面,但我无法获取我之前点击的内容。这就是我想要实现的目标。

【问题讨论】:

  • 你不会创建一个cookie然后检索那个cookie吗?
  • 我没用过它们我知道会话所以不能使用会话吗?
  • 你正在 ajaxing 到同一个页面
  • 为简单起见,只需将页面的 var 发布到 URL,然后使用 get 获取它,然后就可以了。简单、干净、容易
  • @LeviZoesch 会话变量有什么问题?

标签: javascript php jquery ajax session


【解决方案1】:

尝试会话存储:

function createpage (page){
if (sessionStorage.getItem('href')) {
alert(sessionStorage.getItem('href'));
}
sessionStorage.setItem('href', $(this).attr('href'));
}

【讨论】:

  • 但这将显示我不想使用的所有其他页面 url。会话将仅存储我在数组中写入的那些特定页面。 php会话不可能吗??
  • 所有其他页面是什么?
  • 好吧,我正在创建一个包含 40 页的页脚。其中仅包含每个链接的简单文本,因此我不是创建这些页面,而是动态创建这些页面并在用户移动到其他页面时将其删除,并且将从数据库中调用数据。所以这就是我使用会话的原因。它会节省很多空间
  • 页脚不应该包含 40 页页脚是包含 html 元素文本/图片而不是整个页面的页脚
  • 不,我的意思是 40 个链接将转到这些页面,就像这个 stackoverflow 的页脚一样。仅链接
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2021-03-27
  • 2018-06-26
  • 2016-05-31
  • 2013-07-08
  • 1970-01-01
  • 2019-09-16
  • 2018-11-03
相关资源
最近更新 更多