2015-10-27 2 views
1

Я использую плагины jQuery datatables, чтобы хорошо отображать данные с таблицей. Я делаю запрос ajax одним нажатием кнопки, который затем запускает php-скрипт, возвращающий JSON.jquery Datatables using JSON

Вот как мой код:

$('#searchInSugar').button().on('click', function (e) { 
        var searchTxt = $('#searchEntry').val(); 
        var moduleName = $('#moduleSelect').val(); 

        if (!searchTxt.trim() || searchTxt.length === 0) { 
         alert("Please provide some search text string.."); 
         return false; 
        } 
        if (moduleName === "select") { 
         alert("Please select a module.."); 
         return false; 
        } 
        $.ajax({ 
         type: 'POST', 
         url: "fetch_records.php", 
         data: {"searchText": searchTxt, 
          "module": moduleName}, 
         success: function (data) {        
          obj = JSON.parse(data); 

          $(document).ready(function() { 
           $('#dialog_entry_table').DataTable({ 
            "info": false, 
            data: data, 
           columns: [ 
             {"records": "id"}, 
             {"records": "name"}, 
             {"records": "account_name"} 
            ] 
           }); 
          }); 
         }, 
         error: function (exception) { 
          alert('Exeption:' + exception); 
         } 
        }); 
       }); 

Вот что я JSON получить из сценария PHP.

{ 
    "next_offset":-1, 
    "records":[ 
     { 
     "id":"a54e81f8-72b2-ae9b-d526-5608761a28e8", 
     "name":"Mr. James Smith", 
     "date_modified":"2015-09-27T23:52:29+00:00", 
     "account_name":"", 
     "_acl":{ 
      "fields":{ 

      } 
     }, 
     "_module":"Contacts" 
     }, 
     { 
     "id":"b8ec2e0a-ade1-f70f-d722-56098e5c4370", 
     "name":"james bond", 
     "date_modified":"2015-09-28T22:50:56+00:00", 
     "account_name":"", 
     "_acl":{ 
      "fields":{ 

      } 
     }, 
     "_module":"Contacts" 
     }, 
     { 
     "id":"4de93888-155c-7e59-9c4b-56058f1b7ce9", 
     "name":"Mr. James Bond", 
     "date_modified":"2015-09-28T01:50:49+00:00", 
     "account_name":"OSSG", 
     "_acl":{ 
      "fields":{ 

      } 
     }, 
     "_module":"Contacts" 
     } 
    ] 
} 

Теперь я только хочу показать идентификатор, имя и учётная_запись в таблице, но я с трудом достижения этой цели, может кто-то помочь/посоветуйте, что я делаю неправильно здесь.

Это ошибка я получаю:

enter image description here

ответ

1

Try:

var dt = []; 
    $.each(data.records,function(i,v) { 
    dt.push([v.id,v.name,v.account_name]); 
    }); 
    $('#dialog_entry_table').DataTable({ 
      "info": false, 
      data: dt, 
      columns: [ 
       {"title": "id"}, 
       {"title": "name"}, 
       {"title": "account_name"} 
      ] 
     }); 

jsfiddle: https://jsfiddle.net/bwqfq2gr/1/

+0

Нету не работает. Ошибка: Предупреждение DataTables: таблица id = dialog_entry_table - запрошенный неизвестный параметр '1' для строки 0. Для получения дополнительной информации об этой ошибке см. Http://datatables.net/tn/4 – swifty

+0

Не могли бы вы также объяснить свой ответ? Было бы очень благодарно. Спасибо! – swifty

+0

вход данных в этом случае является массивом, поэтому я строю массив и добавляю нужные поля, атрибут столбцов используется для названия колонок, а не для выбора определенного набора данных из json – madalinivascu