問題が発生しています。セッションをクリックするたびに異なるIDを保存しようとしていますが、セッションからこれをフェッチしている間は常に1つのID(i.e-the first saved one.
)が表示されています。私は以下のコードを説明しています。PHPを使用して正しくセッション中のIDを保存できません
アンカータグをクリックしている間、それぞれのIDは下記のajaxコールによってセッションに保存されます。
function keepSection(id){
var url="common.php?action=savecid";
$.post(url,{"cat_data":id},function(data){
var obj=JSON.parse(data);
console.log('data',obj);
if(obj.isData==1){
var v = jQuery("#fyndspaceownsec").validate({
});
if (v.form()) {
$(".frm").hide("fast");
$("#sf2").show("slow");
}
}
})
}
common.phpの:
$action = $_REQUEST['action'];
$result=array();
if($action=='savecid'){
$id=$_POST['cat_data'];
session_start();
if(isset($_SESSION['cid']) && !empty($_SESSION['cid'])){
unset($_SESSION['cid']);
$_SESSION['cid']=$id;
$flag="true";
}else{
$_SESSION['cid']=$id;
$flag="false";
}
$result=array("isData"=>1,"cid"=>$_SESSION['cid'],"flag"=>$flag);
echo json_encode($result);
}
ここに私がsession.AtにするたびにIDを格納しています私はセッションをクリアして、私がしようとしている新しいid.Whenを格納していますクリックしてくださいクリックするたびに最初に保存されたidを1つだけ表示します。
<div class="fyndspacecategory fyndsheightsubc nano">
<div class="nano-content">
<?php
echo $_SESSION['cid'];
?>
私の完全なコードは以下のとおりです。ユーザが第2の部分のdivセクションが表示され、セッションからIDを取得しますnext
ボタンをクリックします。ここ
<div class="fynd-space-itms">
<?php
$classarr = array("item-exhibitation maploc", "item-parking maploc", "item-offices maploc", "item-storage maploc");
$sql="select * from category order by id desc";
$catdata=$dbobj->db_get_data($sql);
$counter=0;
foreach ($catdata as $v) {
?>
<div class="col-sm-3">
<a href="javascript:void(0)" class="<?php echo $classarr[$counter];?>" onClick="keepSection('<?php echo $v['id']; ?>');"><?php echo $v['name'] ?></a><!-- activemap1 -->
</div>
<?php
$counter++;
if($counter==4){
$counter=0;
}
}
<button class="btn nextbtnbgdiv open2" type="button">Next <span class="fa fa-arrow-right"></span></button>
<div class="fyndspacecategory fyndsheightsubc nano">
<div class="nano-content">
<?php
echo $_SESSION['cid'];
?>
</div>
</div>
。
と仮定初めてセッションに保存されたid=16
をクリックしてecho
は値16
を印刷し、二度目にid=17
がセッションに保存されますが、この時間もecho
値は私の問題である16
を来てクリックします。私は毎回古いIDをクリックして新しいIDを保存する必要がありますし、echo
は毎回新しい値を印刷する必要がありますクリックする必要があります。私を助けてください。
session_start();
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!');
}
else
{
echo "session is not set";
}
あなたがにsession_startを呼び出していることを確認してください:
session_start();
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!');
}
array_key_existsキーをチェックするためにISSETを使用しての素敵な代替手段です:
http://stackoverflow.com/questions/11768816/php-session-variables-not-preserved-with-ajax – yogesh84