2

アップデート:

私はついにこの問題の解決策を見つけました。私と同じ問題に直面している場合は、このリンクにアクセスしてみてください

JqueryDataTablesCodeIgniterIgnited-Datatablesライブラリと統合したいときに問題が発生します

「GET」であるデフォルトのDataTablessServerMethodプロパティを使用すると、phpからのデータでjson応答を取得しました。ただし、CodeIgniterはpostを使用しているため、関数が正しいjson出力を返しますが、サーバーデータの読み込みに固執しました。

ここに画像の説明を入力してください

したがって、このガイドに従って、 sServerMethodを「POST」に変更します。今はサーバーデータのロードに固執していませんが、必要なデータを取得できません。

sServerMethod GETを使用したJSON応答(正しいjsonを取得しますが、画像のようにサーバーデータの読み込みでスタックします)

{
"sEcho": 0,
"iTotalRecords": 10,
"iTotalDisplayRecords": 10,
"aaData": [
    [
        "Munauwar",
        "Syed",
        "Mr",
        "6012345678",
        "0000-00-00",
        "basikal"
    ],        
    [
        "Mak",
        "Je Wei",
        "Mr",
        "6012345678",
        "0000-00-00",
        "motor"
    ]
],
"sColumns": "first_name,last_name,salutation,number,birthday,group_name"}

sServerMethodPOSTを使用したJSON応答

{
"sEcho": 1,
"iTotalRecords": 10,
"iTotalDisplayRecords": 0,
"aaData": [],
"sColumns": "first_name,last_name,salutation,number,birthday,group_name"}

これは私のJavaScriptコードです

$('#table1').dataTable({
        "bProcessing": true,
        "bServerSide": true,            
        "sPaginationType": "bootstrap",
        "sAjaxSource": config.base_url + "contact/popup_contact",
        "sServerMethod": "POST"

    });

コンタクトコントローラーでの私の機能

function popup_contact()
{
    $this->datatables
         ->select('first_name,last_name,salutation,number,birthday,group_name')
         ->from('tb_contact')
         ->join('tb_contact_group', 'tb_contact.contact_group_id = tb_contact_group.contact_group_id');          

    echo $this->datatables->generate();             

}
4

3 に答える 3

2

上記の方法がまだ機能しない場合は、次の設定が原因です。 $config['csrf_protection'] = true; // Codeigniter の設定で

fnServerData 呼び出しの最初に aoData.push 行を追加するだけです。

"fnServerData": function(sSource, aoData, fnCallback) {
            aoData.push({name: '<?php echo $this->security->get_csrf_token_name(); ?>', value: '<?php echo $this->security->get_csrf_hash(); ?>'});
                $.ajax({
                    'dataType': 'json',
                    'type': 'POST',
                    'url': sSource,
                    'data': aoData,
                    'success': fnCallback
                });
            }
于 2014-01-10T11:12:02.347 に答える
1
$('#smstable').dataTable({
"bProcessing": true,
"bServerSide": true,
"iDisplayLength": 20,
//"bPaginate": true,
"bAutoWidth": false,
"iDisplayStart": 0,
"bLengthChange": false,//for sorting 10,20,30,50 ....
"sAjaxSource": "././myadmin/ajaxadmin/dt_sms",
"aaSorting": [[ 1, "desc" ]],
"sPaginationType": "full_numbers",
"aoColumns":[
    {"bSearchable": false,"bSortable": false,"bVisible": false},
    {"bSearchable": true,"bSortable": true},
    {"bSearchable": false,"bSortable": false},
    {"bSearchable": true,"bSortable": true},
    {"bSearchable": false,"bSortable": true},
    {"bSearchable": false,"bSortable": false}
],
"fnServerData": function(sSource, aoData, fnCallback){
    $.ajax(
          {
            'dataType': 'json',
            'type'  : 'POST',
            'url'    : sSource,
            'data'  : aoData,
            'success' : fnCallback
          }
      );//end ajx
    // console.log(fnCallback);
}    

});//データブルを終了

Just check my code and check if you missed something. That code works very fine with me.
于 2013-02-25T11:27:32.677 に答える
0

サーバーからのデータの読み込みで行き詰まったときはいつでも...それは基本的に列セットが原因です。「aoColumns」配列を数えて、ビューファイルに設定されているテーブルヘッドと正確に等しいことを確認してください。

それは私に何度も起こりました...そして唯一の解決策は常に列配列セットでした。

于 2015-10-25T18:30:55.640 に答える