Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2012, 23:41
57n 57n вне форума
Новичок на форуме
Отправить личное сообщение для 57n Посмотреть профиль Найти все сообщения от 57n
 
Регистрация: 28.07.2012
Сообщений: 2

Формы и AJAX
Объясните,не ужели аякс не может обработать форму,которую он сам же вставил(но по другому запросу).

вот такого вида запросы

$(function()
{
    refresh_controlbox();
    refresh_shoutbox();
    setInterval("refresh_shoutbox()", 3000);
    setInterval("b()", 999);

    $('form').on('click', '#submit', 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) } else { clearInterval(k); }
    }

    function refresh_controlbox()
    {
        var data = 'refresh=1';

        $.ajax({
            type: "POST",
            url: "check.php",
            data: data,
            success: function(html)
            {
                $("#control").html(html);
            }
        });
    }
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2012, 23:51
57n 57n вне форума
Новичок на форуме
Отправить личное сообщение для 57n Посмотреть профиль Найти все сообщения от 57n
 
Регистрация: 28.07.2012
Сообщений: 2

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 + '&amp;message=' + messag+ '&amp;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&amp;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 + '&amp;message=' + messag+ '&amp;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&amp;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>


Если время не вышло,то выдаёт сообщение,что мол нельзя еще писать,и сколько секунд..

Проблема:не отправляются сообщения..а именно,вообще ничего не происходит..
Вопрос:что здесь не так,и что тут можно улучшить,облегчить,ускорит ь(хотя оно и так очень быстро работает).

Последний раз редактировалось 57n, 01.08.2012 в 01:16.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax таблица gofkane Работа 0 25.09.2011 11:53
Не работает Ajax при проверке формы! Имя jQuery 1 01.07.2011 10:45
ajax tabs + form сбрасывание формы при переключении Tchort AJAX и COMET 1 04.12.2010 19:54
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12