2016-09-20 16 views
0

jqueryデータテーブルを使用していますが、新しいデータをデータテーブルにロードして再描画する際に停止しています。私は次のコードスニペットを持っています。新しいjsonデータでDataTableを再描画する方法

初めてのDataTableの初期化

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" 
}] 


からの初期応答それは最初のために正常に動作します。私はユーザーのクエリの検索に基づいて新しいデータを取得する必要があります。要求された未知パラメータこのエラーの詳細については、行0は「detail_id」、http://datatables.net/tn/4

を参照してください - テーブルID = patient_data:私はテーブルを再描画するとき、それは

のDataTableの警告と言います

マイ再描画コードスニペット

$("#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" 
}] 


私はこの質問が既に求められていると私はすべての日を探してきたが、答えのどれも私の問題を解決していないことを知っています。私はフローとデータテーブルの上にスタックを含むすべてのフォーラムを試してみました。 私はすべての質問に行き、すべての可能な答えを探し、すべてを試しましたが、何も私の問題を解決しませんでした。私は本当にこれで助けが必要です。自分のコードに何が間違っているのか分かりません。

+0

は、このサーバーサイドか?私はそう仮定しますが、あなたは初期化コードで '' serverSide:true''を持っていません。また、APIを使用して検索するのではなく、別のajax呼び出しを作成してデータテーブルを作成しようとしています。これは間違いなくあなたが間違っているところです。 – markpsmith

+0

私は最初のデータ形式と後のデータ形式が異なると思います。最初のデータをデータテーブルに追加してください –

+0

親愛なるMarkpsmith私はクライアント側でデータテーブルを設定し、新しいデータを挿入するだけで、サーバー側からではない新しいデータでデータテーブルを作成しています。サーバーからの応答は、問題がデータの再投入で問題が発生することを示します。それは質問に記載されている警告です。データはjson形式であり、すべてのものはそれでうまくいくはずです。何が間違っているのか分かりません。単にサーバー側の処理がないデータテーブルに新しいデータを挿入するだけです。 – Arshad

答えて

0

私は自分自身で答えを見つけたと思います。 改訂DataTableの再描画コードスニペット

$("#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; 
      }