Показать сообщение отдельно
  #1 (permalink)  
Старый 16.02.2013, 09:47
Интересующийся
Отправить личное сообщение для Jopses Посмотреть профиль Найти все сообщения от Jopses
 
Регистрация: 05.02.2013
Сообщений: 20

Непонятный алгоритм отработки функций
Здравствуйте уважаемые!

Начнём с конструкции: Есть основная страница (я бы сказал подложка) на которой формируются шесть остальных страниц. Переход между страницами осуществляется по вкладкам без перезагрузки (AJAX). На каждой странице формируются свои данные и каждая, исполняет свои функции изменения. Под изменениями я имею ввиду отдельные кнопки для запуска диалоговых окон, формирование в них данных и отправка на сервер. Всего их пять, в каждой находятся 1-2 <select>, которые наполняются <option>, в зависимости от назначенной функции. Сами функции формирования <option> подгружают данные, когда произведён переход на данную страницу (пробовал вариант с подгрузкой непосредственно при запуске диалогового окна, но результат тот же). <select> девять штук, функций 4 (пробовал вариант приписать каждому <select> свою функцию с индивидуальной выборкой из базы, но результат не меняется)


Проблема в следующем: В <select> данные записываются по алгоритму, который мне абсолютно не понятен. То есть:
Зашёл на первую страницу, запустил окно, данные в поле есть.
Зашёл на вторую, запустил, данные в одном <select> есть, во втором нет
Зашёл на третью, запустил, нет данных ни в одном <select>
Вернулся на первую, запустил, уже пусто.
Опять на вторую, запустил, оба <select> заполнены
На третью, аналогично
На четвёртую, один заполнен, второй нет
Обратно на третью, пустой один и Т.Д.

В FireBag показывает, что данные пришли, функция(ии) отработала корректно.
Я думаю, проблема не в коде, а в том, что я чего-то не знаю. Возможно, какого то алгоритма взаимодействия.
Очень прошу помочь, потому что уже замордовался с этим.
Ниже приведены две функции. Одна (основная на странице) формирует кнопки с диалоговыми окнами и подгружает необходимые данные, Вторая формирует один из <select> в обоих диалоговых окнах.
Заранее благодарю всех откликнувшихся!



// Главная функция своей страницы
function func_cams_groups() {
    $("#groups_cams_reload").click(function(){
        func_cams_groups();
    });

    $("#rules_camgroups_create").click(function(){ // В этом окне формируются  select_groups_cams(), select_groups()
        $("#rules_camgroups_form").dialog({ // Вешал функции формирования <option> сюда, вместо подгрузки на страницу. Результат тот же, то есть не корректный
            title: 'Создание\\Редактирование прав группы',
            width: 'auto',
            height: 'auto',
            resizable: false,
            cache: false,
            autosize: true,
            modal: true,
            buttons: {
                "Создать": function() {
                    create_cam_rules_group(this);
                },
                "Отмена": function() {
                    $( this ).dialog( "close" );
                }
            },
            close: function(ev, ui) {
                $('input',this).val('');
            }
        });
    });
    $("#rules_camusers_create").click(function(){ // В этом окне формируются  select_groups_cams(), select_users()
        $("#rules_camusers_form").dialog({ // Вешал функции формирования <option> сюда, вместо подгрузки на страницу. Результат тот же, то есть не корректный
            title: 'Создание\\Редактирование прав группы',
            width: 'auto',
            height: 'auto',
            resizable: false,
            cache: false,
            autosize: true,
            modal: true,
            buttons: {
                "Создать": function() {
                    create_cam_rules_user(this);
                },
                "Отмена": function() {
                    $( this ).dialog( "close" );
                }
            },
            close: function(ev, ui) {
                $('input',this).val('');
            }
        });
    });
    $.when(get_groups_cam_data()).done(function(){ 
        cam_groups_draw(), 
		
		select_groups_cams(), select_users(), select_groups() // Все функции загружаются при переходе на данную страницу
		
		;}).fail(function(){sad();});
}





// Одна из 4 функций формирования <option>
function select_groups_cams(){
    var cam_url = cam_control+"/cgi-bin/admin.pl?m=selectgroupscams"; // Отсюда приходят данные формата JSON
    return $.ajax({
        type: 'GET',
        dataType: 'json',
        cache: false,
        url: cam_url,
        success: function(data){
            if(data.error != undefined) {
                if(undefined != err_lang[data.error]) {
                    alert('Ошибка: '+err_lang[data.error]);
                }else{
                    alert('Возникла неизвестная ошибка, попробуйте позже. ('+data.error+')');
                }
            } else {
               $("#selgroupscams").empty() // Чистка (костыль) при обновлении страницы или окна (отсутствие/присутствие ни как не влияет на данную проблему)   
              for(var selgrca in data){
                        $("#selgroupscams")
                        .append('<option value="' + data[selgrca].cam_gr_id + '">' + data[selgrca].cam_group_name + '</option>');   
              }  
                
            }
        }
    });
}
Ответить с цитированием