UPD
Нормальное объяснение проблемы:
Есть форма(index.html)
+инклюд shout.js и квери)
<div id="shout"></div>
<div id="control"></div>
Вот запрос,который должен скрывать форму,очищать,доставать из shout.php все что мы захотели из бд и выводить в блок <div id="shout">...</div>
$(function()
{
refresh_shoutbox();
setInterval("refresh_shoutbox()", 3000);
$(document).on('click', '#print', function(){
// получаем то, что написал пользователь
var name = $("#name").text();
var messag = $("#message").text();
var check = $("#check").find('option:selected').val();
// Формируем строку запроса
var data = 'name=' + name + '&message=' + messag+ '&check='+check;
// ajax вызов
$.ajax({
type: "POST",
url: "shout.php",
data: data,
success: function(html)
{
$("#shout").slideToggle(500, function()
{
$(this).html(html).slideToggle(500);
$("#message").val("");
});
}
});
return false;
});
});
function refresh_shoutbox()
{
var check = $("#check").find('option:selected').val();
var data = 'refresh=1&check=' + check;
$.ajax({
type: "POST",
url: "shout.php",
data: data,
success: function(html)
{
$("#shout").html(html);
}
});
}
Но мне такое не подходит,мне нужно и капчу, точнее ее подобие,простой запрет повторной записи,если ты недавно уже отписывался(зависит от количества символов в сообщении).
вот мой вариант запросов.
$(function()
{
refresh_controlbox();
refresh_shoutbox();
setInterval("refresh_shoutbox()", 3000);
c=setInterval("b()", 999);
$(document).on('click', '#print', function(){
// получаем то, что написал пользователь
var name = $("#name").text();
var messag = $("#message").text();
var check = $("#check").find('option:selected').val();
// Формируем строку запроса
var data = 'name=' + name + '&message=' + messag+ '&check='+check;
// ajax вызов
$.ajax({
type: "POST",
url: "shout.php",
data: data,
success: function(html)
{
$("#shout").slideToggle(500, function()
{
$(this).html(html).slideToggle(500);
$("#message").val("");
});
}
});
return false;
});
});
function refresh_shoutbox()
{
var check = $("#check").find('option:selected').val();
var data = 'refresh=1&check=' + check;
$.ajax({
type: "POST",
url: "shout.php",
data: data,
success: function(html)
{
$("#shout").html(html);
}
});
}
var k = 0;
function b()
{
if(document.getElementById("control").innerHTML.length <= 180) {k = setInterval(refresh_controlbox(), 999);clearInterval(c) } else { clearInterval(k);c=setInterval("b()", 999); }
}
function refresh_controlbox()
{
var data = 'refresh=1';
$.ajax({
type: "POST",
url: "check.php",
data: data,
success: function(html)
{
$("#control").html(html);
}
});
}
Файлы:
shout.php выдает в зависимости от данных вот такое(примерно)
echo '<li class="message">';
echo '<span class="date">('.date("d.m.Y H:i:s", strtotime($row['date_time'])).')</span>';
echo '<span class="name"> '.$row['name'].':</span>';
echo '<span class="message"> '.$row['message'].'</span>';
echo '</li>';
check.php проверяет прошло ли нужное время от последнего коммента и если прошло то выдаёт вот такую формочку
<form>
Ваше имя: <input type="text" id="name" name="name" />
Сообщение: <input type="text" id="message" name="message" class="message" />
<input type="button" id="print" value="написать" />
</form>
<select id="check" name="check">
<option value="0" onclick="refresh_shoutbox();">Отображать последние 10 сообщений</option>
<option value="1" onclick="refresh_shoutbox();">Отображать последние 100 сообщений</option>
<option value="2" onclick="refresh_shoutbox();">Отображать все сообщения</option>
</select>
Если время не вышло,то выдаёт сообщение,что мол нельзя еще писать,и сколько секунд..
Проблема:не отправляются сообщения..а именно,вообще ничего не происходит..
Вопрос:что здесь не так,и что тут можно улучшить,облегчить,ускорит ь(хотя оно и так очень быстро работает).