Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Запросы в jQuery


Автор: Sentox 25.7.2009, 18:22
Здраствуйте!

Помогите пожалуйста!!!
Есть форма и в ней некоторое количество кнопок(submit).
Они "повешаны" на событие onClick и функцию query(id, action).
Сам код:
Код

function query(id, action) {

    $(document).ready(function(){

        $('#form').submit(function(){

            $.ajax({
                type: "POST",
                url: "/admin/ajax.php",
                cache: false,
                data: "id=" + id + "&action=" + action,
                dataType: 'html',
                success: function(html){
                    $("#ajax").html(html);
                }
            });

            if (action == "delete") {
                $(this).parents("#row" + id).animate({ 
                    opacity: "hide"
                }, "slow");
            }
            return false;
        });
    });
}


Браузер постоянно накапливает запросы, то есть при клике на кнопку допустим в пятый раз (на любую кнопку) в данной форме, отправляются все запросы, которые были до этого.
При всё что кэширование отключено и в скрипте ajax.php отсылаются хедеры для отмены кэширования:
Код

<?php
header('Content-type: text/html; charset="windows-1251"',true);
setlocale(LC_ALL, 'ru_RU');

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>


Помогите найти проблему плиз !!!
P.S.: Пробовал и отключение кэширования в самом браузере (Mozilla 3)

Автор: IDVsbruck 26.7.2009, 00:38
Ой, какой тяжелый случай ...
по клику вызываешь функцию, в которой выполняется обработчик, который должен сработать при загрузке страницы, который запускает обработчик отправки формы, который отправляет запрос на сервер ... ух! Похоже на синичку, которая воровала овес, который ... в доме который построил Джек, не правда ли?

Давай начнем с простых вещей - простого выполнения функции

Код

function query(id, action) {
    $.ajax({type:"POST", url:"/admin/ajax.php", cache:false, data:{id=id, action=action}, dataType: 'html', success:function(html){$("#ajax").html(html)}});
    if (action == "delete") $(this).parents("#row" + id).animate({opacity:"hide"}, "slow");
    return false;
};

И если после этого будут проблемы, то будем их решать по вновь открывшимся обстоятельствам.

Автор: Sentox 26.7.2009, 14:24
Спасибо что решили мне помочь!!!

Всё так же работает, накапливаются запросы.Забыл сказать, может поможет, при обновлении страницы обычным образом (через ссылку на обрабатывающий скрипт), всё сбрасывается.

Странно ничего не менял сейчас пишет "The data area passed to a system call is too small. "

Вот html код:

Код

<tr id = "row{id}">
    <td align="center">{id}</td>
    <td>{subject}</td>
    <td>{text}</td>
    <td align="center">{end_date}</td>
    <td>
        <table>
            <!--<form id = "myForm{id}">-->
                <tr>
                    <td align="center">
                        <input class = "button_del" id = "delete{id}" type='submit' name='act' value='Delete' onclick="query({id}, 'delete')">
                        <input class = "button_edit" id = "edit{id}" type='submit' name='act' value='Edit' onclick="query({id}, 'edit')">
                    </td>
                </tr>
           <!-- </form>-->
        </table>
    </td>
</tr>

Автор: Sentox 26.7.2009, 22:01
Надо же с чего то начинать.
Понял как всё это делается.
Спасибо за отзывчивость.
Решение:
Код

$(document).ready(function(){

    $(function(){
        $('input').bind('click', function(evt){
            $.ajax({
                cache: false,
                type: "POST",
                url: "ajax.php",
                data: "id="+this.id+"&action="+this.name,
                dataType: 'html',
                success: function(html){
                    $("#ajax").html(html);
                }
            });
            return false;
        });
    });

});

Автор: IDVsbruck 27.7.2009, 14:00
Наша писня гарна нова ...
$(document).ready(function(){...}) и $(function(){...}) - идентичны! А ты их вставляешь друг в друга.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)