【问题标题】:send session variable to another php page that is never loaded将会话变量发送到另一个从未加载的 php 页面
【发布时间】:2014-11-15 07:09:19
【问题描述】:

索引页面从登录页面接收会话变量。我希望这个会话变量在用户没有任何操作的情况下发送到另一个 php 页面。使用 script.js 文件创建一个表并用数据填充。 script.js 文件有对 dbmanipulate.php 文件的 ajax 调用。 dbmanipulate.php 与数据库交互。现在无论如何将php会话变量从index.php发送到dbmanipulate.php 用户加载的唯一页面是 index.php,显示的是动态生成的表格。

编辑后我的 index.php 页面:

        <?php
        session_start();
        $fname=$_SESSION['mail'];
        ?>

        <!DOCTYPE HTML>
        <html>
        <title>Addressbook</title>
        <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>





 <script type="text/javascript">

 function myFunction () {


$.ajax({
     url:"DbManipulate.php",
              type:"POST",
              data:"<?php echo $fname ?>"

               });

   }

   </script>            
        <link rel="stylesheet" type="text/css" href="crudstyle.css" />

        </head>
        <body onload="myFunction()" bg color="">

            <div id="hidden_form_container" style="display:none;"></div>

        <div id="mhead"><h2>Your Adressbook</h2></div>
        <div id="note"> <span> your addressbook is connected to our servers :) </span></div>
        <?php
        echo $fname;

        ?>
        <table id='demoajax' cellspacing="0">
        </table>
        <script type="text/javascript" src="script.js"></script>

        </body>
        </html>

【问题讨论】:

  • 您需要在 DbManipulate1.php 中定义 session_start()。
  • 会话启动将无法工作,因为 dbmanipulate 文件未通过索引访问。如果它们之间存在连接的流动,它会起作用
  • 简单地说,使用隐藏的 iframe!

标签: javascript php jquery ajax session


【解决方案1】:
$(function(){
 $.ajax({
 var session_data = <?php $_SESSION['mail'] ?>;
 url:"DbManipulate1.php",
     type:"POST",
     data:"{actionfunction:showData,session_data:session_data"},
     cache: false,
     success: function(response){

      $('#demoajax').html(response);
          createInput();
      }
});

试试这个:)

【讨论】:

  • 我在哪里实施它?在 index.php 中?
  • 这样你可以从你的函数中访问你的会话变量,该函数将通过这个ajax调用对不起我的英语不好。
  • 在你的 ajax 调用函数中,只需使用这段代码 print_r($_POST) 并在浏览器控制台中调试它,你就会显示你的会话值在那里。
【解决方案2】:

在不同的主机中有一些微妙之处。尝试调用该文件中的会话变量,而不声明它只是为了没有 AJAX 的转换。如果生成了,那么一切都应该正常工作,如果没有,请询​​问您的托管服务提供商是否不需要在 php.ini 中指定会话路径。进一步检查文件本身的编码,它们是没有 BOM 的 UTF-8。

由于您在一个服务器上运行文件会话变量不一定发送 POST 意味着它应该很容易使用文件开头的 session_start() 检索...

【讨论】:

    【解决方案3】:

    可能有点作弊? 将其放入 php 文件中,而不是包含 .js 文件。

        <script>
      $(function(){
            $.ajax({
                    url:"DbManipulate1.php?mail=<?php echo $_SESSION['mail']; ?>",
                    type:"POST",
                    data:"actionfunction=showData",
                    cache: false,
                  success: function(response){
    
                        $('#demoajax').html(response);
                     createInput();
    
                                             }
                   });
       </script>
    

    并在另一页上使用 $_GET['mail'] 获取变量。


    编辑:
    试试这个:
    $( document ).ready(function() {
    $.ajax({
     url:"DbManipulate.php",
              type:"POST",
              data:"mail=<?php echo $fname ?>"
    
               });
    }
    

    并在另一页使用 $_POST['mail']。不要将 on_load 放在 body 标记中。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2023-03-30
      相关资源
      最近更新 更多