現在我已經用一件我想要做的事情展開了一段時間。 我想做的事情是在頂部顯示一條消息(確認信息,「你已經獲得了2分」)(消息如stackoverflow)。Ajax:在成功將數據保存到數據庫後,在另一個頁面上顯示通知
我已經使用會話變量存儲了一條確認消息,然後在index.php處有一個ajax腳本,每1秒鐘加載一次session.php,以檢查是否有一些消息要顯示。
但是,我想知道,不能用另一種方式做到這一點?我的意思是,它需要所有的時間
我的網站上的index.php設計,以檢查各1秒,然後你正在瀏覽的框架內休息。
無論如何,我已經得到了一個解決方案,因爲你看,我認爲它可能要求太多的服務器。
所以我想知道,不能以另一種方式做到這一點?我的意思是,它需要每隔1秒檢查一次嗎?
心不是有可能,如果你正確地插入批註,並保存會話變量稱爲USER_MESSAGE,然後告訴index.php來顯示#box。
我的評論「form」在show.php上,它只包含一個普通的文本區域和一個提交按鈕。現在它通過一個JS腳本存儲消息,該腳本將所有消息傳遞給一個字符串,insert.php將其插入到數據庫的普通mysql查詢中,並存儲一個會話變量。 (下面的源代碼)
這裏的一些編碼: session.php文件:在index.php中
<?php
session_start();
if(isset($_SESSION['user_message'])) {
echo 1;
}
?>
格框:
<div id='box' onclick="closeNotice()" style="display: none">
Hey, <b><? echo $pusername; ?></b> - <? echo $_SESSION["user_message"]; ?>
<a href="#" class="close-notify" onclick="closeNotice()">X</a>
</div>
<?php
$_SESSION["user_message"] = null;
?>
AJAX腳本,刷新每個1秒(即我是現在使用):
function checkSession(){
$.ajax({url: "session.php", success: function(data){
if(data == 1){
$('#box').show();
}else{
$('#box').hide();
}
}});
}
setInterval('checkSession()',1000);
將字符串傳遞給insert.php的腳本,它將插入comm耳鼻喉科到數據庫:
var nocache = 0;
function insert() {
document.getElementById('insert_response').innerHTML = "Please Wait .. "
var fID= encodeURI(document.getElementById('fID').value);
var kommentar= encodeURI(document.getElementById('kommentar').value);
nocache = Math.random();
http.open('get', 'insert.php?fID='+fID+'&kommentar=' +kommentar+'&nocache = '+nocache);
http.onreadystatechange = insertReply;
http.send(null);
}
function insertReply() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById('insert_response').innerHTML = ''+response;
}
}
的形式show.php:
<div id="insert_response">
</div>
<form action="javascript:insert()" method="post">
<textarea id="kommentar" name="kommentar"></textarea><br />
<input type="hidden" name="fID" id="fID" value="<? echo $_GET["id"]; ?>" />
<input type="submit" name="Submit" value="Sæt ind!"/>
</form>
我編輯了你的標題,我是否正確地解釋了你的問題? :D – 2010-02-22 22:26:43
你好。實際上沒有,它應該是「顯示通知,如果isset會話變量」。 – Karem 2010-02-22 22:29:12
似乎不可能:/?但我看到網站做到這一點。堆棧流也 – Karem 2010-02-23 10:05:18