Проблема с вкладками пользовательского интерфейса jQuery (загружается через ajax) и данными формы - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь настроить интерфейс с формой, содержащей фильтры для некоторых вкладок пользовательского интерфейса jQuery.Вкладки загружаются с помощью ajax.

Когда я нажимаю на одну из вкладок, я хочу, чтобы данные из формы были отправлены на эту вкладку.

Я настроил ajaxOptions для захватаданные из моей формы, сериализовать его и отправить его на URL.У меня отключено кэширование, и у меня отключено кэширование ajaxOptions.

Это код, который я использую для настройки вкладок.

$("#schedule-tabs").tabs({
ajaxOptions:    {
                    type:   'POST',
                    data:   $('#filters').serialize(),
                    cache:  false,
                    error:  function(xhr, status, index, anchor) {
                                $(anchor.hash).html("<p>An error has been encountered while attempting to load this tab.</p>");
                            }
                },
cache:          false
});

Когда загружаются вкладки,Передаваемые данные - это данные, которые были в форме при первой загрузке страницы, даже если я изменил фильтры в форме.

Я добавил следующее в вышеуказанную настройку вкладки, чтобы проверить формуданные по пути:

select: function(event, ui) {
        alert($('#filters').serialize());
    },
load:   function(event, ui){
            alert($('#filters').serialize());
        },

show:   function(event, ui){
            alert($('#filters').serialize());
        }

Во всех 3 случаях обновляются данные формы.Однако когда данные попадают на мою страницу, это исходные данные, а не новые.

Похоже, что-то где-то кешируется, но я понятия не имею, где.

Не долженданные будут извлечены из формы для каждой загрузки страницы ajax?Почему это кешируется?Есть ли другой способ, которым я могу переопределить данные, которые публикуются при загрузке содержимого вкладки?

Это огромный блокатор в моем текущем проекте.Если я не смогу решить это в ближайшее время, мне нужно будет найти другое решение, кроме вкладок пользовательского интерфейса jQuery.Я хочу использовать их, но если эта проблема не может быть решена ...

Может кто-нибудь помочь ???

1 Ответ

3 голосов
/ 24 февраля 2011

Мне кажется, я нашел ответ на свой вопрос. Я хотел бы поделиться, если другие столкнулись с такой же ситуацией.

По сути, я добавил опцию, которая при выборе вкладки получает текущие данные формы и сбрасывает ajaxOptions.

Код, который я сейчас использую:

// set up the jQuery UI Tabs
var $tabs = $("#schedule-tabs").tabs({
    ajaxOptions:    {
                        type:   'POST',
                        data:   $('#filters').serialize(),
                        cache:  false,
                        error:  function(xhr, status, index, anchor) {
                                    $(anchor.hash).html("<p>An error has been encountered while attempting to load this tab.</p>");
                                }
                    },
    cache:          false,
    select:         function(event, ui) {
                        // get the current form data
                        var filter_options = $('#filters').serialize();
                        // update the data for the ajax options
                        $(this).tabs('option', 'ajaxOptions', { type: 'POST', 'data': filter_options });
                        return true;
                    }
});

Надеюсь, это поможет кому-то еще.

...