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

标签 javascript php

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

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

我正在尝试根据下拉列表中的选择更改表单字段的值。当我第一次做出选择时我就得到了正确的结果 但当我现在做出不同的选择时,值仍然相同。 我已经检查了 getDetails.php 中 session 变量 $_SESSION['Member_details'] 的值,它的值非常好,但 session 变量在 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>

"getDetails.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 调用发生在页面加载后,当 session 处于状态“A”时,您的 JS 就会被渲染。

一旦您进行 Ajax 调用,它就处于状态“B”,但此时已经对 Session 进行了调用,并且初始 View 已经呈现。

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

关于javascript - 在第二次 GET 请求后,第一页中的 PHP session 变量值未更新为第二页中的 session 变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775118/

相关文章:

javascript - 如何将 PHP 行添加到 Handlebars 上下文数组中?

php - MySQL 中的 Google map 路线

php - 性能 : file_get_contents(), 相对和绝对 URL

javascript - CoffeeScript 教程中的 "Splats"是什么意思?

javascript - 页面刷新后如何重定向到主页 View -AngularJS

javascript - 在 foreach 循环内提交特定表单

javascript - PHP:如何获取按钮的父元素?

javascript - 在没有 JQUERY 的情况下将事件从一个 dom 节点路由到另一个

javascript - 我无法将确认框与段落标签链接

javascript - 配置 ng-token-auth 时出现未知提供者错误