Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка данных формы AJAX`ом? 
:(
    Опции темы
Jops
Дата 22.2.2013, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013

Репутация: нет
Всего: нет



Цитата(Aliance @  22.2.2013,  10:12 Найти цитируемый пост)
Я так понимаю наполнение идет в функции func_cams_groups?


Не совсем.

В начале общий функционал:

Есть одна страница admin.html. К ней подкреплены ещё шесть в виде вкладок на основной странице (адресса не отображаются в адрессной строке), так сказать в фоновом режиме:

Код

$(alist)
        .append($('<li/>',{action: 'func_cams'}).append($('<a/>',{href:'admin/cams.html', text:'Список камер'})))
        .append($('<li/>',{action: 'func_cams_groups'}).append($('<a/>',{href:'admin/cams_groups.html', text:'Список групп камер'})))
        .append($('<li/>',{action: 'func_users'}).append($('<a/>',{href:'admin/users.html', text:'Список пользователей'})))
        .append($('<li/>',{action: 'func_groups'}).append($('<a/>',{href:'admin/groups.html', text:'Список групп'})))
        .append($('<li/>',{action: 'func_rules'}).append($('<a/>',{href:'admin/rules.html', text:'Права пользователей'})))
        .append($('<li/>',{action: 'func_rules_groups'}).append($('<a/>',{href:'admin/group_rules.html', text:'Права групп'})))
        ;


Пользователь логинится и его кидает на вкладку 'Список камер'. Он может переключаться между остальными вкладками, а в строке висит всё так же http//...admin.html

Теперь касаемо наполнения:

Пользователь зашёл на 'Список групп камер', там сводная таблица и иконки (каждая предоставляет свои данные).

Тыкает (в нашем случае "просмотр назначенных прав") и поехали:

Тыкнул в сформированную иконку, загрузка функции viewrules_cam_group_all (group.cam_gr_id) с параметром, для отображения прав относящихся к данной группе

Код

.append($('<div/>',{title: 'Просмотр прав группы',         "class":'btn_usr_vr'
    }).bind('click',(function(group){return function(){viewrules_cam_group_all(group.cam_gr_id)}})(group)))


Сама функция

Код

function viewrules_cam_group_all(id){
    $.when(get_cam_group_rules_for_gr(id)).done(function(){vr_cam_gr_draw_all(id);}).fail(function(){sad();});}


Подгрузила данные с помощью get_cam_group_rules_for_us(id)

Код

function get_cam_group_rules_for_gr(id) {
    var vr_url = cam_control+"/cgi-bin/admin.pl?m=getcamgrouprulesgroups&cam_gr_id="+id;
    return $.ajax({
        type: 'GET',
        dataType: 'json',
        cache: false,
        url: vr_url,
        success: function(data){
            if(data.error != undefined) {
                if(undefined != err_lang[data.error]) {
                    alert('Ошибка: '+err_lang[data.error]);
                }else{
                    alert('Возникла неизвестная ошибка, попробуйте позже. ('+data.error+')');
                }
            } else {
                if(data.length>0) {
                    group[id]={};
                    for (var data_line in data) {
                        group[id][data_line] = data[data_line];
                    }
                } else {
                   
                }
            }
        },
        error:function (xhr, ajaxOptions, thrownError, request, error){
            alert('Возникла ошибка загрузки прав, попробуйте подгрузить их позже. \n [ \n'+'xrs.status = ' + xhr.status + '\n' + 'thrown error = ' + thrownError + '\n' + 'xhr.statusText = '  + xhr.statusText + '\n' +
                'request = ' + request + '\n' + 'error = ' + error+' \n ]');
        }
    });
}


Если всё хорошо и данные пришли, то начинаем создавать таблицу и наполнять при помощи vr_cam_gr_draw_all(id)

Код

function vr_cam_gr_draw_all(id) {
    if(($("#vr_grcam_"+id).length > 0)) {
        var tdiv    = $("#vr_grcam_"+id);
        var ttable  = $('#vr_grcam_t'+id);
    } else {
        var tdiv = $('<div/>',{id: "vr_grcam_"+id, 
            title: "Список прав групп и пользователей (ID: "+id+")", "class": "list"
        });
        var ttable = $('<table/>',{id: "vr_grcam_t_"+id, "class": "list", style: "border-bottom: 0px;"
        });
        $(ttable)
        .append($('<thead/>').append($('<tr/>')
            .append($('<th/>',{text: 'ID Группы', width: 120}))
            .append($('<th/>',{text: 'Имя группы', width: 220}))
            .append($('<th/>',{text: 'Статус права', width: 110}))
            .append($('<th/>',{text: '', width: 250}))

            ))
        ;
        $(tdiv).append(ttable);
    

        for(var ruleline in group[id]) {
            $(ttable).append($('<tr/>')
                .append($('<td/>',{text: group[id][ruleline].group_id}))
                .append($('<td/>',{text: group[id][ruleline].group_name}))
                .append($('<td/>',{html: lang.rules.allowed[group[id][ruleline].rule_status]}))
                .append($('<td/>')
                .append($("<form id="+D+id+group[id][ruleline].group_id+">")
                .append($("<div/>", {"class":"divsel"})
                .append($("<select name='rule_status'><option value=''>Выбрать статус</option><option value='0'>Запрещено</option><option value='1'>Разрешено</option><option value='2'>Только онлайн</option></select>")))
                .append("<input type='hidden' name='cam_gr_id' value="+id+">")
                .append("<input type='hidden' name='group_id'value="+group[id][ruleline].group_id+">")    
                .append($("<div/>", {"class":"divbut"})
                .append($('<button/>',{button: {}, "type": "submit", text: 'Изменить'}).click(edit_rules))))
               .append($("</form>")) 

                )

                );
        }}
        $(tdiv).dialog({
    width: '700',
    height: '300', 
    resize: false
});
}


Наполнение окончино, диалогово окно вылезло. Если надо поменять права (по этому поводу и заводилась тема, подавляющее большенство проблем решено), меняем, жмём ИЗМЕНИТЬ и функция edit_rules() делает своё дело


Так же во вложении код, но он вчерашний, без добавлений по вашему совету. Это если сам функционал страницы не понятен и если вообще захочется копаться в 2000+ строчек кода))






Это сообщение отредактировал(а) Jops - 22.2.2013, 12:18

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  func.admin.js 92,97 Kb
PM MAIL   Вверх
Jops
Дата 23.2.2013, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013

Репутация: нет
Всего: нет



решение найдено!

Код

$("#vr_grcam_"+data.id).replaceWith(viewrules_cam_group_all(data.id));


И данные обновляются без перезагрузки)

Спасибо за направку мыслей в нужное русло!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.5522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.