2014-02-09 76 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

尝试过,但仍然没有任何反应... –