2011-08-11 32 views
7

私は、DataTableを既存のAjax検索機能と連携させようとしています。JSON、AJAX、PHPでデータが表示されないDataTables

私は次のコードを持っている:

 $('#SearchResults').dataTable({ 
      "bProcessing": true, 
      "bServerSide": true, 
      "bRetrieve": true, 
      "sAjaxSource": "process.php?action=searchArtifact", 
      "fnServerData": function (sSource, aoData, fnCallback){ 
       aoData.push({ 
        "name": "searchName", 
        "value": $('#ArtifactSearch').attr('value') 
       }); 
       $.ajax({ 
        "dataType": "json", 
        "type": "POST", 
        "url": sSource, 
        "data": aoData, 
        "success": fnCallback 
       }); 

      } 
     }); 

PHPは(JSON_FORCE_OBJECTを使用して)、有効なJSONオブジェクトを返すされた:

{"0":{"ARTIFACT_ID":"4E2FE3BCE356C","ARTIFACT_NAME":"123","ARTIFACT_TYPE":"UI","ARTIFACT_LABEL":"Test_Int_EAS_123","ARTIFACT_LOCATION":"Int","ARTIFACT_DOMAIN":"ABC","ARTIFACT_AUTHOR":null,"REGISTERED_EMAIL":"[email protected]","REGISTERED_DATE":"27-07-2011","REGISTERED_TIME":"11:09:00"} 

私はこのすべての放火犯で罰金が、私の空のテーブルを見ることができますこのデータが入力されていません。

アイデア?

@Kyle:Errr - thats it。私は持っていないと思いますか?これはDataTableでの私の最初の試み(闘争)であり、ドキュメントからコピーするだけです:http://www.datatables.net/usage/callbacks#fnServerData

@MarcB:追加されましたが、データは表示されません。ヘルプありがとう

+0

の検索は、あなたのfnCallback機能は、あなたの投稿をしてください追加しますか? – Kyle

+0

'成功:関数(データ){fnCallback(データ); } '返されたデータを明示的に渡す? –

+0

結果を返すPHPソースコードを表示することはできますか?私はそれがここで要求された適切なフォーマットを与えていないと思うのでhttp://www.datatables.net/usage/server-side –

答えて

0

このプラグインは、返されたJSONオブジェクトが、配列の配列であるプロパティを持つオブジェクトであると想定しています。このプロパティは 'aaData'と呼びます。オブジェクトを返すことはありません。配列を返すだけです。

0

私は同様の問題を抱えていました。私はJSON応答を適切に形成していなかったことが分かります。これが私の仕事:http://datatables.net/examples/examples_support/json_source.txt

<?php 

$arr = array ('aaData' => array(
array('3','35','4', '$14,500', '$15,200','$16,900','5','1'), 
array('1','16','4', '$14,200', '$15,100','$14,900','Running','1'), 
array('5','25','4', '$14,500', '$15,600','$16,900','Not Running','1') 
) 
); 

echo json_encode($arr); 
?> 
0

DataTables.netから、このJSONリソースの例をご覧ください。例の中カッコと比較して、ブラケット付きのjsonを返すことに注意してください。

0

$ .ajax部分を削除することはできますが、代わりに$ .getJSONメソッドを使用できます。

0

また、「aaData」などの余分なオブジェクトを追加することを避けるために以下を追加することができます:あなたがsEchoを設定している何

"sAjaxDataProp": '' 
0

を?数年後半

{ 
    "sEcho": 'refer to "sEcho" in $_GET or $_POST; don't forget to sanitize', 
    "iTotalRecords": 'for pagination', 
    "iTotalDisplayRecords": 'number displayed', 
    "aaData" => { /* your data here */ } 
} 
0

これは誰かを助けるかもしれない:

あなたのJSONは、この構造を持っている必要があります。 :)

DataTableはNULL値をレンダリングできません。データの戻り値がnullの場合にコンテンツを設定するには、defaultContentを参照してください。

参照リンク:レガシーのDataTableの場合https://datatables.net/reference/option/columns.defaultContent

http://legacy.datatables.net/refを参照してsDefaultContent

関連する問題