2016-09-20 6 views
0

Я использую jquery datatable, и я застреваю при загрузке новых данных в datatable и redraw. У меня есть следующий фрагмент кода.Как перерисовать DataTable с новыми данными json

First Time DataTable Initialization

var myDataTable=$('#patient_data').DataTable({ 
       searching: false, 
       "ajax": { 
        "url": "process/get-patient-search.php", 
        "type": "POST", 
        data: { 
         "clinic": <?php echo $clinicID ?> 
        }, 
        'dataSrc':function (data){ 
         return data; 
        } 
       }, 
       "columns": [ 
        { "data": "detail_id" }, 
        { "data": "fname" }, 
        { "data": "surname" }, 
        { "data": "dentist" , 
         "className":"hidden-xs" 
        }, 
        { "data": "clinic_name" , 
         "className":"hidden-xs" 
        }, 
        { "data": "speciality" , 
         "className":"hidden-xs" 
        }, 
        { "data": "date_registered" , 
         "className":"hidden-xs", 
        }, 
        { "data": "detail_id" } 
       ], 
       "aoColumnDefs": [{ 
        "aTargets": [7], 
        'searchable': false, 
        'orderable': false, 
        'className':'center', 
        'mRender': function (data, type, full, meta){ 
         return '<button id="' + data+ '" onClick="getMoreInfo('+data+');" class="moreInfo"><i class="fa fa-info-circle"></i></button>'; 
        } 
       }] 

      });<br> 

Начальный ответ сервера

[{"detail_id":"1", 
    "fname":"Hakim", 
    "surname":"Ali", 
    "dentist":"Ariya Stark", 
    "clinic_name":"Doctor ", 
    "speciality":"O", 
    "date_registered":"13\/02\/16" 
}, 
{"detail_id":"2", 
    "fname":"Maria", 
    "surname":"Arshad", 
    "dentist":"Ariya Stark", 
    "clinic_name":"Doctor ", 
    "speciality":"O", 
    "date_registered":"13\/02\/16" 
}] 


Он отлично работает для первого. но мне нужно получить новые данные на основе поиска пользовательских запросов. И когда я перерисовывать таблицу Это говорит о том, что

DataTables предупреждение: таблица ID = patient_data - Запрошенный неизвестный параметр «detail_id» для строки 0. Для получения дополнительной информации об этой ошибке, см http://datatables.net/tn/4

Мой Redraw Код сниппета

$("#search_submit").on('click',function(){ 
       if (search_patient.valid()) { 
        $('.errorHandler').fadeOut(); 
        $.post('process/process-patient-search.php',$('#patient-search-form').serialize(), function(response){ 
         if(isJson(response)){//isJson(response) 
          alert("data is json"); 
          alert(response); 
          /* myDataTable.clear(); 
          myDataTable.rows.add(response); 
          myDataTable.draw(); */ 
          myDataTable.clear().draw(); 
          myDataTable.rows.add(response); // Add new data 
          myDataTable.columns.adjust().draw(); 
         }else{ 
          alert(response); 
          /* 
          $('.errorHandler').html(''); 
          $('.errorHandler').html(response); 
          $('.errorHandler').fadeIn("slow"); 
          $('.errorHandler').fadeOut(2000); */ 
         } 
        }); 
       } else { 
        //alert('form is not valid'); 
       } 

      }); 
      function isJson(str) { 
       try { 
        JSON.parse(str); 
       } catch (e) { 
        return false; 
       } 
       return true; 
      } 


ответа сервера

[{"detail_id":"66", 
"fname":"Waseem", 
"surname":"Akram", 
"dentist":"Ariya Stark", 
"status":"1", 
"clinic_name":"Doctor ", 
"speciality":"S", 
"date_registered":"15\/09\/16" 
}, 
{"detail_id":"67", 
"fname":"Waseem", 
"surname":"Akram", 
"dentist":"Ariya Stark", 
"status":"1", 
"clinic_name":"Doctor ", 
"speciality":"S", 
"date_registered":"15\/09\/16" 
}, 
{"detail_id":"69", 
"fname":"Waseem", 
"surname":"Akram", 
"dentist":"Ariya Stark", 
"status":"1", 
"clinic_name":"Doctor ", 
"speciality":"S", 
"date_registered":"15\/09\/16" 
}] 


Я знаю, что этот вопрос уже задавался и я искал весь день, но ни один из ответа не решить мою проблему. Я пробовал каждый форум, включая стек над потоком и datatable форум. Я прошел весь вопрос и искал все возможные ответы и пробовал все, но ничто не решило мою проблему. Мне действительно нужна помощь в этом. Я не знаю, что не так с моим кодом.

+0

Является ли это на стороне сервера? Я так полагаю, но у вас нет '' serverSide ': true' в коде инициализации. Кроме того, вы не используете API для поиска, вы делаете отдельный вызов ajax и пытаетесь заполнить данные. Несомненно, вы ошибаетесь. – markpsmith

+0

Я думаю, что исходный формат данных и более поздний - разные. Пожалуйста, добавьте исходные данные, поданные в datatable. –

+0

Дорогой Markpsmith. Я заполняю данные новыми данными, которые не со стороны сервера. Я настроил данные на стороне клиента и мне нужно только вставить новые данные. Ответ на сервер, о котором идет речь, поднимает проблему при переполнении данных. В нем говорится предупреждение, которое содержится в вопросе. Данные в формате json, и все должно быть в порядке с ним. но не знаю, что случилось. Просто вставлять новые данные в таблицу данных, нет обработки на стороне сервера. – Arshad

ответ

0

Я думаю, что нашел ответ сам. Пересмотренный DataTable Redraw фрагмент кода

$("#search_submit").on('click',function(){ 
       if (search_patient.valid()) { 
        $('.errorHandler').fadeOut(); 

        $.post('process/process-patient-search.php',$('#patient-search-form').serialize(), function(response){ 

         if(isJson(response)){//isJson(response) 

          myDataTable.clear(); 
          myDataTable.rows.add(JSON.parse(response)); 
          myDataTable.draw(); 

         }else{ 

          $('.errorHandler').html(''); 
          $('.errorHandler').html(response); 
          $('.errorHandler').fadeIn("slow"); 
          $('.errorHandler').fadeOut(2000); 
         } 
        }); 
       } else { 
        //alert('form is not valid'); 
       } 

      }); 
      function isJson(str) { 
       try { 
        JSON.parse(str); 
       } catch (e) { 
        return false; 
       } 
       return true; 
      } 
Смежные вопросы