Javascript 会话变量在使用后未更新

Javascript 会话变量在使用后未更新,javascript,php,ajax,Javascript,Php,Ajax,我试图检查函数的结果,并通过使用会话变量“alernativeRD”确定它应该在我的页面上的位置。在第一次尝试时,它会转到正确的元素,但是在那之后,它只会继续转到第一个元素,而不管它是否正确。经过一些测试,我发现“alernativeRD”确实在PHP函数中每次都会更改,但在Javascript部分不会更改 PHP部分 function firstSignInDefault(){ global $con; $clubUsername= $_SESSION['clubUsernam

我试图检查函数的结果,并通过使用会话变量“alernativeRD”确定它应该在我的页面上的位置。在第一次尝试时,它会转到正确的元素,但是在那之后,它只会继续转到第一个元素,而不管它是否正确。经过一些测试,我发现“alernativeRD”确实在PHP函数中每次都会更改,但在Javascript部分不会更改

PHP部分

function firstSignInDefault(){
    global $con;
    $clubUsername= $_SESSION['clubUsername'];
    $_SESSION['alternativeRD']='false'; //sets it back to false to avoid having alternativeRD be true    for next user

    $lastName= mysqli_real_escape_string($con, $_POST['lastNameF']);
    $firstName= mysqli_real_escape_string($con, $_POST['firstNameF']);
    $memberID= mysqli_real_escape_string($con, $_POST['idNumberF']);    

    if(!(is_numeric($memberID))){
        die("<h3> Student ID must be a number </h3>"); 
    }

    $getMemberRow= mysqli_query($con, "SELECT * FROM memberstable WHERE MemberMadeID='$memberID' AND Club='$clubUsername'");  

    if(mysqli_num_rows($getMemberRow)==0){                          
        $sql="INSERT INTO memberstable (MemberMadeID,FirstName,LastName,Club)    
        VALUES ('$memberID','$firstName','$lastName', '$clubUsername')";

        $test=false;              //checks to make sure sql statement runs fine
        if(mysqli_query($con,$sql))
            $test=true;
        else {
            echo "<h3> Error running sql </h3>";
        }

        $date=date("Y-m-d h:i:sa"); 

        $getMemberRow= mysqli_query($con, "SELECT * FROM memberstable WHERE MemberMadeID='$memberID' AND Club='$clubUsername'");  
        $memberRowArray=mysqli_fetch_array($getMemberRow);
        $memberPanID=$memberRowArray['UniquePanDBID'];

        $sql2="INSERT INTO signinstable (TimeOfSignIn, UniquePanDBID, ClubUsername, FirstName, LastName) VALUES ('$date','$memberPanID','$clubUsername', '$firstName', '$lastName')"; 
        //THE FOCUS OF THIS QUESTION IS BELOW THIS COMMENT
        if(mysqli_query($con, $sql2) && $test==true){
            $_SESSION['alternativeRD']='true'; 
            echo " <h2 id='signedInPeople' >".$date. " ".$firstName ." ". $lastName ."</h2>";
        }

    }
    else {
        echo "<h3> ID Number already in use</h3>";
    }
}
function processFSIF(){

var xmlHttp= makeXMLHTTP();

// Create some variables we need to send to our PHP file
var url = "signInDataPlace.php";

var idNumberF = document.getElementById("idNumberF").value;
var lastNameF = document.getElementById("lastNameF").value;
var firstNameF = document.getElementById("firstNameF").value;
var typeSignIn="first"; 

var vars = "idNumberF="+idNumberF +"&lastNameF="+lastNameF +"&firstNameF="+firstNameF +"&typeSignIn=" +typeSignIn;

xmlHttp.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
xmlHttp.onreadystatechange = function() {
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        var return_data = xmlHttp.responseText;
        //AREA OF PROBLEM BELOW
        <?php
            if($_SESSION['alternativeRD']=='true'){              ///YOU ARE HERE, alternativeRD is acting stupid 
        ?>
            document.getElementById("serverInputList").innerHTML = return_data;
        <?php 
            }else{
        ?>
            document.getElementById("serverInputFSIF").innerHTML = return_data;
        <?php 
        }
        ?>

    }
}

// Send the data to PHP now... and wait for response to update the status div
xmlHttp.send(vars); // Actually executes the request
document.getElementById("serverInputFSIF").innerHTML = "processing...";

}
函数firstSignInDefault(){
全球$con;
$clubUsername=$\会话['clubUsername'];
$\u SESSION['alternativeRD']=“false”;//将其设置回false,以避免下一个用户的alternativeRD为true
$lastName=mysqli\u real\u escape\u字符串($con,$\u POST['lastNameF']);
$firstName=mysqli\u real\u escape\u字符串($con,$\u POST['firstNameF']);
$memberID=mysqli\u real\u escape\u字符串($con,$\u POST['idNumberF']);
如果(!(是数字($memberID))){
die(“学生ID必须是一个数字”);
}
$getMemberRow=mysqli_查询($con,“从memberstable中选择*,其中MemberMadeID='$memberID'和Club='$clubUsername');
如果(mysqli_num_rows($getMemberRow)=0{
$sql=“插入memberstable(MemberMadeID、FirstName、LastName、Club)
值(“$memberID”、“$firstName”、“$lastName”、“$clubUsername”)”;
$test=false;//检查以确保sql语句正常运行
if(mysqli_查询($con,$sql))
$test=true;
否则{
echo“运行sql时出错”;
}
$date=日期(“Y-m-d h:i:sa”);
$getMemberRow=mysqli_查询($con,“从memberstable中选择*,其中MemberMadeID='$memberID'和Club='$clubUsername');
$memberRowArray=mysqli\u fetch\u数组($getMemberRow);
$memberPanID=$memberRowArray['UniquePanDBID'];
$sql2=“将值插入signinstable(TimeOfSignIn、UniquePanDBID、ClubUsername、FirstName、LastName)值(“$date”、“$memberPanID”、“$ClubUsername”、“$LastName”)”;
//这个问题的焦点在下面的评论中
if(mysqli_查询($con,$sql2)&&$test==true){
$\会话['alternatived']='true';
回显“$date.”“$firstName.”“$lastName.”;
}
}
否则{
回显“ID号已在使用”;
}
}
JAVASCRIPT/AJAX部分

function firstSignInDefault(){
    global $con;
    $clubUsername= $_SESSION['clubUsername'];
    $_SESSION['alternativeRD']='false'; //sets it back to false to avoid having alternativeRD be true    for next user

    $lastName= mysqli_real_escape_string($con, $_POST['lastNameF']);
    $firstName= mysqli_real_escape_string($con, $_POST['firstNameF']);
    $memberID= mysqli_real_escape_string($con, $_POST['idNumberF']);    

    if(!(is_numeric($memberID))){
        die("<h3> Student ID must be a number </h3>"); 
    }

    $getMemberRow= mysqli_query($con, "SELECT * FROM memberstable WHERE MemberMadeID='$memberID' AND Club='$clubUsername'");  

    if(mysqli_num_rows($getMemberRow)==0){                          
        $sql="INSERT INTO memberstable (MemberMadeID,FirstName,LastName,Club)    
        VALUES ('$memberID','$firstName','$lastName', '$clubUsername')";

        $test=false;              //checks to make sure sql statement runs fine
        if(mysqli_query($con,$sql))
            $test=true;
        else {
            echo "<h3> Error running sql </h3>";
        }

        $date=date("Y-m-d h:i:sa"); 

        $getMemberRow= mysqli_query($con, "SELECT * FROM memberstable WHERE MemberMadeID='$memberID' AND Club='$clubUsername'");  
        $memberRowArray=mysqli_fetch_array($getMemberRow);
        $memberPanID=$memberRowArray['UniquePanDBID'];

        $sql2="INSERT INTO signinstable (TimeOfSignIn, UniquePanDBID, ClubUsername, FirstName, LastName) VALUES ('$date','$memberPanID','$clubUsername', '$firstName', '$lastName')"; 
        //THE FOCUS OF THIS QUESTION IS BELOW THIS COMMENT
        if(mysqli_query($con, $sql2) && $test==true){
            $_SESSION['alternativeRD']='true'; 
            echo " <h2 id='signedInPeople' >".$date. " ".$firstName ." ". $lastName ."</h2>";
        }

    }
    else {
        echo "<h3> ID Number already in use</h3>";
    }
}
function processFSIF(){

var xmlHttp= makeXMLHTTP();

// Create some variables we need to send to our PHP file
var url = "signInDataPlace.php";

var idNumberF = document.getElementById("idNumberF").value;
var lastNameF = document.getElementById("lastNameF").value;
var firstNameF = document.getElementById("firstNameF").value;
var typeSignIn="first"; 

var vars = "idNumberF="+idNumberF +"&lastNameF="+lastNameF +"&firstNameF="+firstNameF +"&typeSignIn=" +typeSignIn;

xmlHttp.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
xmlHttp.onreadystatechange = function() {
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        var return_data = xmlHttp.responseText;
        //AREA OF PROBLEM BELOW
        <?php
            if($_SESSION['alternativeRD']=='true'){              ///YOU ARE HERE, alternativeRD is acting stupid 
        ?>
            document.getElementById("serverInputList").innerHTML = return_data;
        <?php 
            }else{
        ?>
            document.getElementById("serverInputFSIF").innerHTML = return_data;
        <?php 
        }
        ?>

    }
}

// Send the data to PHP now... and wait for response to update the status div
xmlHttp.send(vars); // Actually executes the request
document.getElementById("serverInputFSIF").innerHTML = "processing...";

}
函数processFSIF(){
var xmlHttp=makeXMLHTTP();
//创建一些我们需要发送到PHP文件的变量
var url=“signandataplace.php”;
var idNumberF=document.getElementById(“idNumberF”).value;
var lastNameF=document.getElementById(“lastNameF”).value;
var firstNameF=document.getElementById(“firstNameF”).value;
var typeSignIn=“第一”;
var vars=“idNumberF=“+idNumberF+”&lastNameF=“+lastNameF+”&firstNameF=“+firstNameF+”&typeSignIn=“+typeSignIn;
open(“POST”,url,true);
//设置用于在请求中发送url编码变量的内容类型标头信息
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
//访问XMLHttpRequest对象的onreadystatechange事件
xmlHttp.onreadystatechange=函数(){
if(xmlHttp.readyState==4&&xmlHttp.status==200){
var return_data=xmlHttp.responseText;
//下面的问题领域
document.getElementById(“serverInputList”).innerHTML=返回\u数据;
document.getElementById(“serverInputFSIF”).innerHTML=返回\u数据;
}
}
//立即将数据发送到PHP…并等待更新status div的响应
send(vars);//实际执行请求
document.getElementById(“serverInputFSIF”).innerHTML=“处理…”;
}

在使用AJAX之前,Javascript只打印了一次。您可以将会话值与响应一起返回,也可以在PHP中设置cookie,而不是在javascript中使用它

✔ <代码>会话_开始()加载?是的,我没有在这里显示它,但它加载在页面顶部,我的所有其他会话变量工作正常,所以我不认为是这样。好吧,我有点困惑,我该如何准确地返回会话变量和响应文本?它们不是不同类型的数据吗?返回文本可以格式化为JSON,例如,在PHP中,使用
JSON\u encode()
和很容易。