我想切换查询,以便我可以更改特定div上的内容。就像我选择查询A我得到一组特定的内容,QueryB其他组内容。所以我使用boolean $ _SESSION来操纵我在php文件上的条件。请注意,$ _SESSION是一个“超全局”或自动全局变量,这意味着它在整个脚本的所有范围内都可用。
我注意到click函数不会切换会话var。看来这个变量是在没有单击锚点的情况下读取的。
这是我的代码:
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切换超全局变量?
提前致谢
答案 0 :(得分: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;
}
?>