PHP 会话变量在第一页的值在第二个 GET 请求后未更新为第二页会话变量的值


PHP session variable's value in 1st page not updating to value of session variable in 2nd page after 2nd GET request

我在PHP中使用会话变量。我正在从 modifyDetails.php 向另一个名为 getDetails.php 的 php 文件发出 ajax 请求,使用:

xmlhttp.open("GET", "getDetails.php?val=" + str, true);

我正在尝试根据下拉列表中的选择更改表单字段的值。我第一次选择时做对了但是当我现在进行不同的选择时,值仍然相同。我已经在getDetails中检查了会话变量$_SESSION['Member_details']的值.php它的值非常好,但是会话变量在修改详细信息.php 不会更新其值。

"修改详细信息.php"

<?php 
   session_start();
   $fid = $_SESSION['fid_value'];  
   $get_Member_details = $_SESSION['Member_details'];
?>  
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Modify Details</title>
<script src="/prj/jquery.min.js"></script>
<script>
function fillData(str)
{  
   $(document).ready(function() 
   {
      if (window.XMLHttpRequest){
            xmlhttp=new XMLHttpRequest();
       }
      else{
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("kk").innerHTML = xmlhttp.responseText;
    }
  };
      xmlhttp.open("GET", "getDetails.php?val=" + str, true);
      xmlhttp.send();
      //window.alert(str); 
      var jage= "<?php echo $get_Member_details['age'];?> ";
      var jsex= "<?php echo $get_Member_details['sex'];?> ";
      var jdob= "<?php echo $get_Member_details['dob'];?> ";
      //alert(jdob);
      var jrelation = "<?php echo $get_Member_details['Relationship'];?> ";
      var jcontact = "<?php echo $get_Member_details['contact'];?> ";
      var jaddress = "<?php echo $get_Member_details['address'];?> ";
      var jpin = "<?php echo $get_Member_details['pin'];?> ";
      document.getElementById("Age").value = jage;
      //document.getElementById("Sex").value = jsex;
      document.getElementById("Dob").value = jdob;
      document.getElementById("Rel").value = jrelation;
      document.getElementById("Contact").value = jcontact;
      document.getElementById("Address").value = jaddress;
      document.getElementById("Pin").value = jpin;
   });
}
</script>
<style>
   body{
   background-color:lightgrey;
}
#button {
    background-color: green;
    border: none;
    color: white;
    padding: 8px 14px;
    text-align: center;
    text-decoration: none;
    font-size: 17px;
    margin: 2px 4px;
    cursor: pointer;
}
table { padding:2px 6px;}
</style>
</head>
<body>
    <h1>Customer Form </h1>
    <h3>Please fill in the details below:</h3>
      <form action="modified.php" method="post">
         <table style="width:24%;">
            <tr><td>Family ID:</td><td><input type="text" name="fid" value="<?php echo "$fid";?>" readonly /></td></tr><tr></tr>
            <tr><td>Name:</td>
            <td>
              <?php
                 mysql_connect('localhost', 'root', '');
                 mysql_select_db('project');
                 $sql_query = "SELECT name FROM family WHERE fid=$fid";
                 $records = mysql_query($sql_query);
                 echo"<select name='member_name' onchange='fillData(this.value)'>";         
                 while( $family_member = mysql_fetch_array($records) ) 
                 {
                    echo "<option value='".$family_member['name']."' >".$family_member['name']."</option>";                        
                 }
                 echo "</select></td></tr>"; 
              ?> 
        <div id="kk">
        </div>
            <tr><td>Age:</td><td><input id="Age" type="text" name="age" required /></td></tr><tr></tr>
            <tr><td>Sex:</td><td><input id="Sex" type="radio" name="sex" value="Male" required />Male 
                                 <input id="Sex" type="radio" name="sex" value="Female" required/>Female</td></tr><tr></tr>
            <tr><td>Date of Birth:</td><td><input id="Dob" type="text" name="dob" required /></td></tr><tr></tr>
            <tr><td>Relationship:</td><td><input id="Rel" type="text" name="relation" list="relations" required>
                         <datalist id="relations">
                                <option value="Son">Son</option>
                                <option value="Daughter">Daughter</option>
                                <option value="Father">Father</option>
                                <option value="Mother">Mother</option>
                                <option value="GrandMother">GrandMother</option>
                                <option value="GrandFather">GrandFather</option></td></tr><tr></tr>
                         </datalist></td></tr>  
            <tr><td>Contact Number:</td><td><input id="Contact" type="text" name="contact" required /></td></tr><tr></tr>
            <tr><td>Address:</td><td><input id="Address" type="text" name="address" required /></td></tr><tr></tr>
            <tr><td>Pincode:</td><td><input id="Pin" type="text" name="pin" required /></td></tr><tr></tr> 
         </table>  <br> 
        <input id="button" type="submit" value="Submit"/>
      </form>
      <br><br><br>
      <a href="search.html"> <h4>Back to Search Page</h4></a>
</body>

"获取详细信息.php"

<?php 
   session_start();
   $fid =$_SESSION['fid_value']; 
?>  
<?php
 $name=$_GET['val'];
 echo $name;
 mysql_connect('localhost', 'root', '');
 mysql_select_db('project');
 $sql_query = "SELECT * FROM family WHERE fid=$fid AND name='$name'";
 $records = mysql_query($sql_query);
 $_SESSION['Member_details'] = mysql_fetch_array($records);
 $hold = $_SESSION['Member_details'];
 //echo $hold['dob'];
 //echo $hold['contact'];
?> 

Ajax 调用发生在页面加载后,当会话处于状态"A"时,您的 JS 会被渲染。

进行 Ajax 调用后,它处于状态"B"中,但此时已经调用了 Session,并且已经呈现了初始视图。

因此,要解决此问题,您应该使用 JSON 传递通过 Ajax 存储库更改的变量。