Я ненадолго отошел от дел, что хочу сделать.
То, что я хочу сделать, это отобразить сообщение (подтверждение «Вы заработали 2 балла») вверху (сообщение, подобное stackoverflow).
Я сделал это, сохранив сообщение с подтверждением, используя переменную сеанса, а затем в index.php есть скрипт ajax, который загружает session.php каждую 1 секунду для проверки, есть ли какое-либо сообщение для отображения.
НО мне интересно, разве это не может быть сделано по-другому? Я имею в виду, нужно ли проверять каждую 1 секунду все время
Мой сайт является дизайном на index.php, а затем вы просматриваете все остальное внутри фрейма.
Во всяком случае, у меня уже есть решение для этого, как вы видите, я думаю, что оно может запросить слишком много к серверу.
Так что мне интересно, разве это не может быть сделано по-другому? Я имею в виду, нужно ли проверять каждую 1 секунду все время?
Разве нельзя, если вы правильно вставили комментарий и сохранили переменную сеанса с именем user_message, а затем скажите index.php, чтобы отобразилось поле #.
Моя форма комментария находится на show.php, который просто содержит обычную текстовую область и кнопку отправки. Теперь он сохраняет сообщение через JS-скрипт, который передает все это в строку, в insert.php, который вставляет с обычным запросом mysql в базу данных, и сохраняет переменную сеанса. (исходный код ниже)
Вот немного кодирования:
session.php:
<?php
session_start();
if(isset($_SESSION['user_message'])) {
echo 1;
}
?>
блок div в index.php:
<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, который вставляет комментарий в базу данных:
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>