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