【问题标题】:php div refreshed by javascript looses php session variables after 1st reload由 javascript 刷新的 php div 在第一次重新加载后丢失了 php 会话变量
【发布时间】:2017-01-11 21:34:11
【问题描述】:

ma​​in.php:

<?php
session_start();

echo "<div id='buttons'>";
include "buttons.php";
echo "</div>";

JavaScript:

function refreshButtons(){
    $('#buttons').load(document.URL +  ' #buttons');
}

buttons.php:

session_start();
$a=checkbuttons($_SESSION['userid']);
if ($a=="false") {
echo "<button type='submit' class='btn btn-danger btn-lg'>Return to Main</button>";
}
else {
echo "<button type='submit' class='btn btn-success btn-lg'>Proceed</button>";
}

我有一个主页,其中有一个每 10 秒刷新一次的 div。它加载 buttons.php,根据用户会话 ID 检查 MySQL 数据库是否返回 true 或 false。

页面第一次加载正常,所有变量都正常。

我遇到的问题是 $_SESSION['userid'] 在第一次 JavaScript 刷新 div 后为空。当然,在那之后查询的结果总是错误的。会话 id 保持不变,我已经检查过了。我不知道接下来要在这里检查什么。 buttons.php 每次加载时都会启动它自己的会话,但变量仍然为空。

【问题讨论】:

  • 你在 main.php 中有一个语法错误,你还没有发布你的 checkbuttons() 函数。
  • @Mike 提到您需要包含 checkbuttons() 函数。
  • 根据我们掌握的信息很难判断,但是第一次,buttons.php的代码直接包含在main.php中(可能导致session_start被调用了两次),第二次时间由 Ajax 调用。会话是否存储在 cookie 中?它是否通过 Ajax 调用正确维护?我可以补充一下,是不是 document.URL 'main.php'?这个JS在哪里?

标签: javascript php jquery session


【解决方案1】:

checkbuttons() 函数根据 $_SESSION['userid'] 查询 mysql 数据库返回 true 或 false。

我设法通过改变来解决这个问题

        function refreshButtons(){
        $('#buttons').load(document.URL +  ' #buttons');
    }

    function refreshButtons(){
        $.ajax({
          url: "buttons.php",
          cache: false,
          success: function(data){
             $("#buttons").html(data);
          } 
        });
}

编辑: 我认为发生的是 load(document.URL + '#buttons') 正在重新加载整个页面而不传递会话变量, 通过ajax加载buttons.php只重新加载特定的div,从而传递会话变量。

ps。为我原始帖子中的错误格式道歉,已经很晚了,当时我很沮丧。

【讨论】:

    猜你喜欢
    • 2014-08-16
    • 1970-01-01
    • 2014-03-23
    • 2022-11-02
    • 1970-01-01
    • 2015-07-02
    • 2014-08-14
    • 1970-01-01
    相关资源
    最近更新 更多