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'];
}
?>
我想做的是,
从javascript确认框中获取值,并使用Ajax将确认框的返回值存储到php SESSION
变量。在Ajax文件中我只分配$_SESSION['id']= $_GET['id']
。程序执行后,我从确认框中按OK
。它将1
分配给id
的会话变量。如果我下次按cancel
时值不变,当我尝试再次按cancel
时,会话值已更改为id
为2.什么是问题,任何建议和解决方案都是可以接受的。
我无法找到隐藏在其背后的逻辑。我可以清楚地看到什么是返回以及ajax返回的内容,但是main.php中使用的会话变量在第二次单击后会发生变化。
先谢谢。
答案 0 :(得分:0)
似乎只是尝试
没有错控制台记录您的java脚本参数并检查错误
使用alert并检查传递给ajax文件的值是什么
3.在您的ajax文件中使用die()
并检查是否存在不匹配。
答案 1 :(得分:0)
我在Drupal上遇到了同样的问题。
会话变量在ajax调用后才保存:当我重新加载页面时,session与我的ajax调用之前相同,只保存第二页重新加载。
我使用Drupal函数drupal_session_commit();
您可以在https://api.drupal.org/api/drupal/includes!session.inc/function/drupal_session_commit/7.x
下找到的功能代码