2014-02-09 112 views
0

我遇到了datables服務器端處理服務器響應的問題。到目前爲止,Ajax調用工作:Datatables服務器響應不顯示

$('#result_tbl').dataTable({ 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": "search_synagogue_ajax.php", 
    "aoColumns":[ 
        { "sTitle": "Column1", "mData": "string" }, 
        { "sTitle": "Column2", "mData": "stirng" }      
       ], 
    "fnServerData": function (sSource, aaData, fnCallback) { 

     var countries = new Array(); 

     aaData.push({"name": "country", "value": countries}); 

     console.log(aaData); 

     $.ajax({ 
      "dataType": 'json', 
      "type": "POST", 
      "url": sSource, 
      "data": aaData, 
      "success": function(data) { 
       console.log(data); 
      }, 
      error: function(xhr, status, error) { 
       var err = eval("(" + xhr.responseText + ")"); 
       alert(err.Message); 
      } 
     }); 
); 

我的回答是創造這個樣子的:

$array = array(
    "aaData" => array(
     array(
      'test1', 
      'test1', 
     ), 
     array(
      'test2', 
      'test2', 
     ) 
    ) 
); 

echo json_encode($array); 

我也得到:

{"aaData":[["test1","test1"],["test2","test2"]]} 

然而,該表將不會顯示給定測試數據。 Ajax的成功被稱爲...我注意到,有些人聲稱大括號不允許在數據表< 1.8(我使用1.9.4)。有人知道我在這裏做錯了嗎?

編輯:也許我理解錯了什麼。我想要做的是將一些參數發佈到ajax文件,然後獲取它的響應並將其插入到我的數據表中?我必須在ajax成功回調中手動執行此操作嗎?

EDIT2:仍然無法正常工作?有什麼建議?

EDIT3:嘗試了更多simplier例如,即使沒有成功:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 

    <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame 
    Remove this if you use the .htaccess --> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

    <title>clientAjax</title> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script type="text/javascript" src="lib/DataTables-1.9.4/media/js/jquery.dataTables.min.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
     $('.hist_data').on('click', function(){ 
      $('.myTable').dataTable({ 
       "bProcessing": false, 
       "bServerSide": true, 
       "bJQueryUI": true, 
       "sAjaxSource": "serverAjax.php", 
       "sAjaxDataProp": "data", 
       "fnServerData" : function(sSource, aoData, fnCallback) { 
        request = $.ajax({ 
         "dataType" : "json", 
         "type" : "POST", 
         "url" : sSource, 
         "data" : aoData, 
         "success" : function(data) { 
          console.log(data); 
         }, 
         "error": function(xhr, status, error) { 
          var err = eval("(" + xhr.responseText + ")"); 
          alert(err.Message); 
         } 
        }); 
       }, 
       "aoColumns": [ 
        { "mData": "id" }, 
        { "mData": "name" },] 
      }); 

     }); 
     }); 
    </script> 
    </head> 

    <body> 
    <div> 
     <header> 
     <h1>clientAjax</h1> 
     </header> 
     <nav> 
     <p> 
      <a href="/">Home</a> 
     </p> 
     <p> 
      <a href="/contact">Contact</a> 
     </p> 
     </nav> 

     <div class="hist_data">Click here</div> 
     <table class="myTable"> 

     </table> 

     <footer> 
     </footer> 
    </div> 
    </body> 
</html> 

和Ajax文件:

<?php 

$array = array(
    "aaData" => array(
     array(
      'id' => 1, 
      'name' => "ONE" 
     ), 
     array(
      'id' => 2, 
      'name' => "TWO" 
     ) 
    ) 
); 

echo json_encode($array); 

?> 
+0

firefox在控制檯中顯示什麼?這可能是一個JS錯誤。 – luqita

+0

我使用chrome進行調試 - 控制檯不給我任何錯誤,並且成功輸出到控制檯看起來正確。我還使用JSONLint測試了有效的json格式。 –

回答

0

我已經明白了我自己!

,我需要做的是補充:

fnCallback(data); 

的成功回調和數據出現在表!

0

嘗試從最後一個數組項刪除逗號這樣

$array = array(
"aaData" => array(
    array(
     'test1', 
     'test1' 
    ), 
    array(
     'test2', 
     'test2' 
    ) 
) 

);

echo json_encode($ array);

+0

嘗試過,但仍然沒有任何反應... –