0

我想切换查询,以便我可以更改特定 div 上的内容。就像如果我选择 Query A 我得到一组特定的内容,QueryB 另一组内容。所以我使用布尔值 $_SESSION 来操纵我对 php 文件的条件。请注意,$_SESSION 是一个“超全局”或自动全局变量,这意味着它在整个脚本的所有范围内都可用。

我注意到点击功能不会切换会话变量。似乎无需单击锚即可读取此变量。

这是我的代码:

.html 文件:

        <p><a class="queryA" href="">Query A</a> | <a class="queryB" href="">Query B</a></p>

    </div>

jQuery函数:

$('#SwitchTab .queryA').click(function(){
    $('#chatbox').html(""); // turn chatbox empty
    <?php $_SESSION['qQuery'] = TRUE;?>
    return false;
});

$('#SwitchTab .queryB').click(function(){

    <?php $_SESSION['qQuery'] = FALSE;?>
    return false;
});

php:

if(isset($_SESSION['name'])){  // 

    $name = $_SESSION['name'];
    $Userid= $_SESSION['idUser'];


}
if(!isset($_SESSION['qQuery'])){

$_SESSION['qQuery'] = FALSE;
}
$follow= $_SESSION['qQuery'];

    include 'openconn.inc';

    if($follow){ // Query A
        $sql = "SELECT U.PhotoName, M.Mid, M.Author, M.MidUser, M.Message, M.MsgTime, M.TotLabelValue FROM messages AS M, users AS U, follow AS F WHERE U.Uid=M.MidUser AND F.idFrom=".$Userid." AND M.MidUser=F.idTo";
    }
    else{   //Query B
        $sql = "SELECT U.PhotoName, M.Mid, M.Author, M.MidUser, M.Message, M.MsgTime, M.TotLabelValue FROM messages AS M, users AS U WHERE U.Uid=M.MidUser";

        }
...

问题:有没有办法用 jquery 切换超全局变量?

提前致谢

4

1 回答 1

1

当您只是单击时,您并没有重新加载页面。您正在客户端执行此操作。这就是为什么会话没有改变。为了更改会话,您必须将此信息发送到服务器。

您的代码中的其他问题是,您在 javascript 指令中运行的 $_SESSION['qQuery'] 代码始终会在提交到服务器时运行。两个都。因此,当您加载页面时,通过 jquery 指令后,此变量将为 false。

要在浏览器中单击时更改此变量的值,您可以使用 @AbsoluteZERO 推荐的 ajax。但是,您需要将代码更改为:

$('#SwitchTab .queryA').click(function(){
    $('#chatbox').html(""); // turn chatbox empty
    ajaxInstructionToChangeSession();
    return false;
});

$('#SwitchTab .queryB').click(function(){

    ajaxInstructionToChangeSession();
    return false;
});

对于服务器,您必须执行以下操作:

<?php
  if($parameterfromajax == 'queryA'){
    $_SESSION['qQuery'] = TRUE;
  }else{
    $_SESSION['qQuery'] = false;
  }

?>
于 2013-04-27T16:39:10.240 回答