【发布时间】:2014-10-30 08:47:01
【问题描述】:
Main.php
<?php
session_start();
msgbox("Are you sure?", "confirm");
$Result = $_SESSION['id'] ;
print "<p id='txt'> </p>";
if($Result == 1 )
echo "Result is true";
elseif ( $Result == 2 )
print "<br><br>Return value is '$Result'";
function msgbox($msg, $type)
{
if ($type == "confirm")
{
print "<script src='Validate.js'></script>";
print "<script> ret = confirm ('$msg') ;
if (ret)
Write_to_variable('1');
else
Write_to_variable('2');
</script>";
?>
Validate.js
function Write_to_variable( value )
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txt").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Variable.php?id="+value,true);
xmlhttp.send();
}
Variable.php
<?php
session_start();
if ( $_GET['id'] )
{
$_SESSION['variable'] = $_GET['id'];
print $_SESSION['variable'];
}
?>
我想做的是,
使用 Ajax 从 javascript 确认框获取值并将确认框的返回值存储到 php SESSION 变量。在 Ajax 文件中,我只是分配了$_SESSION['id']= $_GET['id']。当程序执行时,我在确认框中按下了OK。它将1 分配给id 的会话变量。如果我下次按cancel 时值没有改变,当我再次尝试按cancel 时,会话的值已更改为id 为2。这是什么问题,任何建议和解决方案都是欣然接受。
我找不到隐藏在它背后的逻辑。我可以清楚地看到返回的内容和 ajax 返回的内容,但是 main.php 中使用的会话变量在第二次单击后发生了变化。
提前致谢。
【问题讨论】:
-
print "<scipt src=Validate.js行上的引号弄乱了。 -
是
$_SESSION['id']= $_GET['id']而不是S_SESSION['id']= $_GET['id'] -
请进行更改...有什么帮助吗?
-
你的 ajax 调用工作正常吗??
标签: javascript php ajax session