所以即時通訊試圖弄清楚這裏有什麼錯誤!用Jquery和Ajax處理PHP會話
即時通訊使用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();
}
現在發生了什麼是我運行查詢,但該頁面還挺刷新會議收到的變種是actualy銷燬。如果我第二次點擊它,它按預期工作,會話已經被破壞。
任何人都可以解釋這一點?該過程與我的登錄相同,並且工作正常。
的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);
}
OMG我不能相信我做到了! print_r($ _ SESSION)把它帶給我,我真的用管理會話而不是用戶會話。萬分感謝。 – MadeInDreams
很多人認爲AJAX是服務器和瀏覽器之間的巫術,因爲有時候看不到服務器在做什麼。這樣簡單的技巧可以節省大量的時間和痛苦......很高興幫助 – charlietfl