每次ajax调用后会话变量都会被取消

时间:2014-04-27 06:21:31

标签: javascript php jquery ajax session

我正在尝试修改每个ajax调用中的会话变量(以便稍后只从db中检索新内容)但是每个alt中都会取消一个会话变量$ _SESSION [' s'] 。 ajax电话!但是未经修改的会话变量$ _SESSION [" iuser"]工作正常。我正在localhost / wamp上测试这个并在npp。

编码
   <?php
session_start();
//if(isset($_SESSION["s"]))
$in=$_SESSION["s"];
//echo $_SESSION['sid'];
$link=mysql_connect("localhost","root","");
mysql_select_db("secure_scrapbook") or die("Sorry :( Connection Error");
$query="Select data,user,id from public where public=1 && id>'$in' ORDER BY id DESC";
$result=mysql_query($query);
$i=mysql_fetch_array($result);
$_SESSION["s"]=$i["id"];
//echo $_SESSION['sid'];
if(!($_SESSION["s"]==$in))
{echo 0;
echo $in;
echo $_SESSION["iuser"];
echo $_SESSION["s"];
echo "check<br>";
}
?>

- jquery / ajax -----

<script>
        setInterval(function() {
    $.ajax({
 url: "gets.php",
 type : "get" ,
  dataType : 'html',
 success : function(data){
 //$("#public").html(data);}
        $("#public").html(data+$("#public").html()+'-');}
});}, 5000); //5 seconds
 </script>

2 个答案:

答案 0 :(得分:0)

我建议你像这样调试你的电话:

<?php
session_start();
if (empty($_SESSION["s"])){
    echo 'EMPTY SESSION ';
    die;
}

$in = $_SESSION["s"];
$link=mysql_connect("localhost","root","");
mysql_select_db("secure_scrapbook") or die("Sorry :( Connection Error");
$query="Select data,user,id from public where public=1 && id>'$in' ORDER BY id DESC";
$result=mysql_query($query);
$i=mysql_fetch_array($result);
if (empty($i["id"])){
    echo 'EMPTY $i';
    die;
}
$_SESSION["s"]=$i["id"];
//echo $_SESSION['sid'];
if(!($_SESSION["s"]==$in))
{echo 0;
echo $in;
echo $_SESSION["iuser"];
echo $_SESSION["s"];
echo "check<br>";
}
?>

每次收到消息 EMPTY SESSION EMPTY $ i 检查:

  • ajax标题并尝试逐步跟踪您的问题。
  • 数据库中的元素具有ID
  • $ in在可能的ID
  • 的范围内
  • $ in是一个数字

答案 1 :(得分:0)

<?php
    session_start();
    //if(isset($_SESSION["s"]))
    $in=$_SESSION["s"];
    //echo $_SESSION['sid'];
    $link=mysql_connect("localhost","root","");
    mysql_select_db("secure_scrapbook") or die("Sorry :( Connection Error");
    $query="Select data,user,id from public where public=1 && id>'$in' ORDER BY id DESC";
    $result=mysql_query($query);
    if($i=mysql_fetch_array($result))
    {
        $_SESSION["s"]=$i["id"];
        //echo $_SESSION['sid'];
        if(!($_SESSION["s"]==$in))
        {
            echo 0;
            echo $in;
            echo $_SESSION["iuser"];
            echo $_SESSION["s"];
            echo "check<br>";
        }
    }
    else
        echo "No more Data in table";
?>

试试这个,如果&#34;表格中没有更多数据&#34;被回应,这意味着您的数据库没有任何数据满足您设置的条件。

还有一件事,看到你的代码看起来像$ _SESSION [&#34; s&#34;]永远不会等于$ in所以我猜你不需要使用if条件。