所以我想弄清楚这里出了什么问题!
我使用 Ajax 登录和注销用户并刷新文档的某些部分。一切正常,但是当我注销时,我必须单击我的链接两次才能看到更改。
完成所有指令后,我似乎正在破坏会话。
这是它的工作原理(或几乎!)
文件 html/php
<div id="top">
<?php
$top = new top();
$top->display();
?>
</div>
所以我只是调用一个制作文档顶部内容的类,这工作正常。
在您登录时的顶部,您有注销选项和以下 jquery/ajax 调用
$("#unlog").live("click",function(){
req_content("top","user","logout","goodbye");
});
因此,当我单击注销时,我运行 req_content() 函数,这一切正常
现在,当我单击它时,运行我的有点 ajax_query 响应程序
if($ajax_action=='logout'){
unset($_SESSION['user']);
session_destroy();
require('class.php');
$top=new top();
$top->display();
}
现在发生的事情是我运行了查询,但是在会话变量实际上被破坏之前页面有点刷新。如果我再次单击它,它会按预期工作,因为会话已经被破坏。
任何人都可以解释这个吗?该过程与我的登录相同,并且工作正常。
req_content() 函数
function req_content(box,user,action,query) {
var xhr = getXMLHttpRequest();
document.getElementById(box).innerHTML="<img src='img/load.gif' alt'Loading....'>";
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
document.getElementById(box).innerHTML=xhr.responseText;
}
};
var sVar1 = encodeURIComponent(box); /* Endroit ou on demande le contenu*/
var sVar2 = encodeURIComponent(user); /* Qui demande le contenu(facultatif)*/
var sVar3 = encodeURIComponent(action); /* Quel action veut-on effectuer*/
var sVar4 = encodeURIComponent(query); /* La requete pour efectuer l'action*/
xhr.open("GET", "ajax_http.php?box=" + sVar1 + "&user=" + sVar2 + "&action=" + sVar3 +"&query=" + sVar4, true);
xhr.send(null);
}