2017-01-14 1 views
2

не могли бы вы помочь мне. Я разрабатываю back-end приложение, использующее laravel, где я использую таблицы данных. Ситуация заключается в том, что я извлекаю список рассылки из mailgun и хочу вернуть пользователей в этот список рассылки. Я использую тег select html из blade-сервера laravel и хочу обновить таблицу данных, отправив список рассылки в качестве параметра в запрос ajax, но ничего не происходит. Я последовал за этот вопросLaravel & Datatables: данные Ajax не обновляют таблицу с новыми параметрами ajax из html select

https://datatables.net/forums/discussion/30286/ajax-reload-is-not-sending-updated-params

Ниже мой код

Laravel BLADE:

Mailing List: <select id="mailing-list"> 
           @foreach($lists as $list) 
             @if($list->address == '[email protected]') 
             <option selected="selected" value="{{$list->address}}">{{$list->address}}</option> 
             @else 
             <option value="{{$list->address}}">{{$list->address}}</option> 
             @endif 
           @endforeach 
          </select> 

ДАННЫЕ ТАБЛИЦА:

// get variable for mailing list 
        mailingListName = document.getElementById("mailing-list").value; 
        $('#mailing-list').change(function(){ 
          table.ajax.reload(); 
         }); 
        // data table 
        var table = $('.data_Tables_wrapper').DataTable({ 
           "bPaginate": true, 
           "bJQueryUI": true, 
           "iDisplayLength": 50, 
           "sPaginationType": "full_numbers", 
           "ajax": { 
            url: 'lists/data', 
            data: function (d) { 
              return JSON.stringify(d.mail = mailingListName); 
             } 
            }, 
           "order": [ 2 ], 
           "columns": [ 
            { data:"email", name: "email" }, 
            { data:"name", name: "name" }, 
            { data:"subscribed", name: "subscribed" } 
           ] 
          }); 

Любая идея, почему таблица данных не обновляется с правильными данными.

+0

не связаны непосредственно на ваш вопрос, но вы можете попробовать использовать пакет [yajra/Laravel-DataTables-оракул] (https://packagist.org/packages/yajra/laravel-datatables-oracle). – linuxartisan

+0

@linuxartisan Я не думаю, что могу использовать это, потому что список, который я использую, - это mailgun api, но спасибо за предложение. –

ответ

1

Благодарим вас за ответы на Sebastianb и fallen.lu. Я выяснил, почему данные не загружаются при изменении варианта выбора. Вместо того, чтобы помещать его вне события изменения. Я должен положить его внутрь, и я получаю правильные данные для этого списка рассылки.

$('#mailing-list').change(function(){ 
          mailingListName = document.getElementById("mailing-list").value; 
          table.ajax.reload(); 
         }); 
0
$('#table').dataTable().fnDestroy(); 
$('#table').dataTable({ 
      "bDestory": true, 
      bRetrieve: true}); 

bRetrieve: Извлечение существующего DataTables экземпляру
bDestory: уничтожить любую существующую таблицу соответствия селектора и заменить с новыми параметрами.

но в DataTable документов , становится "destroy": true, "retrieve": true, чтобы попробовать ...

+0

Где я должен поставить эти параметры? Внутри функции изменения? Простите за вопрос. –

+0

'вар таблица = $ ('data_Tables_wrapper.') DataTable ({ "bPaginate":. Правда, "bJQueryUI": правда, "iDisplayLength": 50, "sPaginationType": "full_numbers", "bDestory": true, bRetrieve: true ' –

+0

ничего не происходит, он все еще загружает предыдущие данные –

1

попробуйте изменить функцию data в объекте Ajax-то вроде этого:

"ajax": { 
    url: 'lists/data', 
    data: function (d) { 
      d.mail = mailingListName; 
     } 
    } 
} 

(проверьте examples на сайте DataTable)

Я не знаю, какие данные сервер ожидает от «почты». Кроме того, помните, что данные передают эти данные в виде запроса GET.