显示会话var而不刷新页面

时间:2015-07-21 11:33:45

标签: javascript php session

我在ajax文件中设置了一个session var:$_SESSION['id_essai']=$ligne[1];。此var的值应在每次提交表单时更改。

如果没有为页面充电,我想获得此var的值。所以我这样回应:echo $_SESSION['id_essai']; 我的问题是,当我尝试回应它时,我得到之前的值,直到我为页面充电。我想刷新此var而不对页面进行充值。我怎样才能做到这一点 ?

编辑:

我向我的ajax文件发送一个handontable网格:

$(document).ready(function(){
        $('#submit_button_essai').click(function(){

            $.post("ajax_insert_essai.php",{arr:data_essai}, insert_essai_callback,'json'); 
            return session;
        });
    });

在这个ajax文件中,我用这个网格的一个值声明我的session var,我可以这样返回:

array_unshift($tab_erreur,$_SESSION['id_essai']);

    echo json_encode($tab_erreur);    

所以我发送了一个错误数组和我在回调函数中处理的会话变量:

function insert_essai_callback(responseObject,ioArgs) //ajax renvoie les indices des cases erronnées et les messages correspondants.
{
var jsonobject = eval(responseObject);
console.log(jsonobject);
//alert(jsonobject[0]);
var session = jsonobject[0];

for(var item in jsonobject)
{       
        if((item % 2 ) == 0) //Si l'indice est pair, on affiche la couleur
        {
            $("td").eq(jsonobject[item-1]).after("<div class=\"message\">"+jsonobject[item]+"</div>");
        }else //Si l'indice est impair, on affiche le message 
        {
            $("td").eq(jsonobject[item]).css("background-color","red");
        }   

}

}

我的会话var在jsonobject[0]中。 尝试在ajax中返回会话变量后,这是我的代码。

4 个答案:

答案 0 :(得分:0)

我认为问题是每个reuqest都会在服务器上启动一个新会话。

<?php

session_start();

// Restart the last session if a session-id is given
if (isset($_GET['session-id'])
    session_id($_GET['session-id']);

/* ... your code here .. */

$response = array('session-id' => session_id());

/* ... add some more values/results to your response */

header('Content-Type: application/json');
die(json_encode($response));

?>

答案 1 :(得分:0)

设置新的PHP文件。然后使用ajax在click事件或更改事件或其他内容上将需要更新的值发送到会话变量。当它收到值时,PHP将更新会话值。然后在JSON中返回该变量的值。田田你得到了更新的价值。我希望你理解..

示例代码看起来像这样

在ajax(我在这里使用的jquery ajax)

 $.ajax({

  url : 'session.php',
  method : 'POST',
  data : your value to update ,
  dataType : json,
  success : function(data){

      alert(data.value);

   }


 })

在session.php文件中

  <?php
    session_start();
    $value = $_POST['value'];
    $_SESSION['value'] = $value;
    $json = array('value' => $_SESSION['value'] );
    print_r(json_encode($json));


  ?>

如果您需要在不刷新的情况下获取值,请在事件上调用ajax函数。然后将返回的数据更新为div或其他内容。我希望这个有帮助! :)

答案 2 :(得分:0)

在那里创建process.php个文件并post/get {。}}。

form

这会将您的资料发布到处理页面。

<form method = 'post' action = 'process.php'> <input type = 'hidden' value = 'some_Hidden_Value_that_You_Want' id = 'hidden_id'> <!--Some other stuff (Grid may be) --> <input type = 'button' value = 'Submit' id = 'submit_form'> </form> $("#hidden_id").click(function(){ var hidden_id = $('#hidden_id').val() $.ajax({ url: 'process.php', type: 'POST', data:{ want_this: hidden_id }, success: function(posted){ alert(posted); } }); }); 或您的process.php

这样做可以查看您的内容

ajax_insert_essai.php

修改

<?php print_r($_POST); ?>

中的

callback

答案 3 :(得分:0)

如果将从页面发送将成为新会话变量的数据,则只需使用页面上已有的数据即可使用JavaScript更新到页面。

如果要从页面发送要返回的数据,则无需重新获取数据,因为它已在页面上。