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

时间:2016-03-03 14:38:00

标签: javascript php

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

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

我正在尝试根据下拉列表中的选择更改表单字段的值。当我第一次做出选择时,我得到了正确的答案 但是当我现在做出不同的选择时,值仍然是相同的。 我在 getDetails.php 中检查了会话变量 $ _ SESSION [' Member_details'] 的值,它的值非常好,但是会话变量 modifyDetails.php 没有更新它的值。

  

" modifyDetails.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>
  

&#34; getDetails.php&#34;

<?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'];

?> 

1 个答案:

答案 0 :(得分:1)

在页面加载后发生Ajax调用,当会话处于状态&#39; A&#39;时,JS会被渲染。

一旦你进行了Ajax调用,它就处于状态&#39; B&#39;,但此时已经调用Session并且初始视图已经呈现。

因此,为了解决这种情况,您应该通过JSON传递通过Ajax reposne更改的变量。