【问题标题】:Ajax doesn't change my $_SESSION variableAjax 不会改变我的 $_SESSION 变量
【发布时间】:2013-12-05 23:34:16
【问题描述】:

我有一个带有 $_SESSION 变量的 main.php 页面,我调用 ajax 来修改这个 var,在 ajax 上 $_SESSION var 发生了变化,但是当我在 main.php 上检查它时它没有。

我每个人都有session_start();session_id(); 上的 ID 是相同的。

如果重新加载页面,值会被修改

main.php

<?php session_start();echo session_id();$_SESSION['equipo_g']=0 ?>
...
<!--SCRIPT CALLED BY BUTTON-->
<script>
function pdf(){ 

if (window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest();
  }
else{
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("pdf").innerHTML=xmlhttp.responseText;
    }
  } 

var e = document.getElementById("equipos_g");
var equipo = e.options[e.selectedIndex].value;

xmlhttp.open("GET","test.php?r="+equipo,true);
xmlhttp.send();
}
</script>
...
<!--Trigger a func to call the ajax-->
<button type="button" onclick="pdf();">Preparar Grafica</button>
...
<div id"pdf"></div>
...

test.php

<?php 
session_start();
$r=$_GET["r"];

$_SESSION['equipo_g']=$r;
echo $_SESSION['estacion_g'];//The change is done

//Run a script that use $_SESSION['equipo_g']
echo '<button type="button" onClick="mostrar_graf1();" id="bot_grafica">Graficar</button>';
exit();
?>

【问题讨论】:

  • 请出示一些代码。
  • 检查一下。我会在这里通宵XD

标签: php ajax session session-variables


【解决方案1】:

尝试将您的会话 ID 与您的请求一起发送:

xmlhttp.open("GET","test.php?r="+equipo+"&sid=<?php echo session_id(); ?>",true);

并在开始会话之前使用它来设置会话 ID:

session_id($_GET['sid']);
session_start();

另外请注意,如果你打电话

$_SESSION['equipo_g']=0

在每次加载 main.php 时,您都将会话变量 equipo_g 设置为零,然后再尝试读取它。

【讨论】:

  • 由于某种原因,如果我添加这句话,脚本将不起作用: xmlhttp.open("GET","test.php?r="+equipo+"&sid="+,true);顺便说一句,我从 main.php 中删除了 $_SESSION['equipo_g']=0
  • 我这边犯了可怕的错误。我纠正了它。使用答案中的更新代码重试。
  • 不工作,但 ID 相同,请检查:这次我在每次运行时清理我的 cookie,然后 onClick="mostrar_graf1(); 按钮 id="bot_grafica 不起作用,该功能只是不运行,但如果重新加载页面并再次尝试它可以工作。
  • 最后的研究:我点击按钮 id="bot grafica"(清除了 cookie,没有发生任何事情)稍后我刷新页面,在那一刻和新页面加载之间的脚本运行!我能做什么?
【解决方案2】:

最后,你只需将我需要的所有值发送到 ajax 并在 php 中进行操作,然后使用 JSon 将结果(如参数)发送到 JScript 函数! 我不想使用它,但它现在很好用,谢谢 SquareCat:3 (这里是代码):

test.php

<?php
$estacion=$_GET["estacion"];
$equipo=$_GET["equipo"];
$year=$_GET["year"];
$month=$_GET["month"];
$week=$_GET["week"];

$alldata=array();

//SOME MYSQL OPERATIONS USING THE VAR's PRODUCING $result_data

array_push($alldata,$result_data);
?>

<button type="button" onClick='mostrar_graf2(<?php echo  json_encode($alldata) ?>);' id="bot_grafica">Graficar</button>

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多