Найти - Пользователи
Полная версия: Откуда второй запрос при обновлении datatables?
Начало » Django » Откуда второй запрос при обновлении datatables?
1
nxexox
Добрый вечер! Суть ворпоса в заголовке. В двух словах. Я загружаю страницу и он загружает данные ajax-ом в таблицу. ПОсле я выбираю какие то фильтры делаю ajax на сервер, он там фильтрует и отдает обратно словарь. Тут все работает супер. Но как только я пробую переписать таблицу новыми данными, то сразу же делается еще запрос только как при загрузке страницы, который возвращает все данные, и таблица уже новым запросом перезаписывается. В общем, как его убрать??? Или как еше сделать фильтрацию??? Помогите пожалуйста, все доки и весь гугл уже сломал

html
<table id="tableBid" class="table table-striped table-bordered" cellspacing="0" width="100%">
                    <thead>
                        <tr>
                            <!--<th>Аватар</th>-->
                            <th>Дата заявки</th>
                            <th>Страница отправки сообщения</th>
                            <th>Следующий шаг</th>
                            <th>Дата шага</th>
                            <th>Комментарий все</th>
                            <th>Имя</th>
                            <th>Телефон</th>
                            <th>е-meil</th>
                        </tr>
                    </thead>
                </table>

JS
var oTable = $('#tableBid').dataTable({
        "processing": true, //При подгрузке страницы показывать таблицу или нет
        "serverSide": true, // фильтрация на стороне сервера
        "oLanguage": {
             "sProcessing":   "Подождите...",
             "sLengthMenu":   "_MENU_ записей на странице",
             "sZeroRecords":  "Записи отсутствуют.",
             "sInfo":         "Записи с _START_ до _END_ из _TOTAL_ записей",
             "sInfoEmpty":    "Записи с 0 до 0 из 0 записей",
             "sInfoFiltered": "(отфильтровано из _MAX_ записей)",
             "sInfoPostFix":  "",
             "sSearch":       "Поиск: ",
             "sUrl":          "",
             "oPaginate": {
             "sFirst": "Первая",
             "sPrevious": "Предыдущая",
             "sNext": "Следующая",
             "sLast": "Последняя"
             },
        },
        "ajax": "{% url 'bid.all.json' %}"

urls
url(r'^table/json$', views.BidListView.as_view(), name='bid.all.json'),
url(r'^filtrbid/$', views.BidListView.filter_queryset, name='bid.filtr.json'),


views
class BidListView(BaseDatatableView):
    model = bid
    columns = ['dataBid', 'site.url', 'status', 'dateStatus', 'comment', 'name', 'number', 'email', 'id']
    order_columns = ['dataBid', 'site.url', 'status', 'dateStatus', 'comment', 'name', 'number', 'email']
    max_display_length = 250
    def filter_queryset(self, qs):
        if self.request.method == "POST":
            search = self.request.POST['sitesFiltr']
            if search:
                qs = qs.filter(status=int(search))
                return qs
            else:
                return qs
        return qs

ВОТ САМОЕ ГЛАВНОЕ, ВОТ ТАК ОТПРАВЛЯЮ ЗАПРОС НА ФИЛЬТРАЦИЮ И ОБНОВЛЯЮ ТАБЛИЦУ:
$.ajax({
            url: "{% url 'bid.all.json' %}",
            type: 'POST',
            data: {
                //sitesFiltr: filtrFFF,
            },
            dataType:"json",
            error: function(data) {
                    oTable.fnClearTable();
                    oTable.fnAddData(data.data);
            },
            // При успехе меняем информацию в шаблоне
                success: function(data){
                    oTable.fnClearTable();
                    oTable.fnAddData(data.data);
                },
            // CSRF механизм защиты Django
                beforeSend: function(xhr, settings) {
                    console.log('-------------before send--');
                    function getCookie(name) {
                        var cookieValue = null;
                        if (document.cookie && document.cookie != '') {
                            var cookies = document.cookie.split(';');
                            for (var i = 0; i < cookies.length; i++) {
                                var cookie = jQuery.trim(cookies[i]);
                                // Does this cookie string begin with the name we want?
                            if (cookie.substring(0, name.length + 1) == (name + '=')) {
                                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                                break;
                            }
                        }
                    }
                    return cookieValue;
                    }
                    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                        // Only send the token to relative URLs i.e. locally.
                        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
                    }
                }
            });// ajax
nxexox
Помогите пожалуйста, кто знает как решить задачу.
FishHook
в джанге нет никаких BaseDatatableView, откуда знать что ты там понаписал?
nxexox
Это приложение такое есть, django-datatables,
основано на datatables jquery
FishHook
nxexox
Это приложение такое есть, django-datatables,
А когда вы вопрос задавали, вы где-то кому-то об этом сообщили?
Поймите, проигнорировать ваш вопрос гораздо проще, чем сидеть и догадываться о том, чего вы решили не рассказывать о своем проекте. Это так, на будущее.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB