Здравствуйте уважаемые!
Начнём с конструкции: Есть основная страница (я бы сказал подложка) на которой формируются шесть остальных страниц. Переход между страницами осуществляется по вкладкам без перезагрузки (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>');
}
}
}
});
}