【问题标题】:Datatables server response not displaying数据表服务器响应未显示
【发布时间】:2014-02-09 12:19:39
【问题描述】:

我遇到了关于 datables 服务器端处理的服务器响应的问题。到目前为止,ajax 调用正在运行:

$('#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 成功被称为...我注意到有些人声称数据表中不允许使用大括号

编辑:也许我理解错了。我想要做的是将一些参数发布到 ajax 文件,然后获取它的响应并将其插入到我的数据表中?我必须在 ajax 成功回调中手动执行此操作吗?

EDIT2:仍然无法正常工作?有什么建议吗?

EDIT3:尝试了一个更简单的例子,即使没有成功:

<!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);

?>

【问题讨论】:

  • firefox 在控制台中显示什么?这很可能是 JS 错误。
  • 我使用 chrome 进行调试 - 控制台没有给我任何错误,并且控制台的成功输出看起来正确。我还使用 JSONLint 测试了有效的 json 格式。

标签: php jquery ajax json datatables


【解决方案1】:

尝试像这样从最后一个数组项中删除逗号

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

);

回显 json_encode($array);

【讨论】:

    【解决方案2】:

    我自己解决了!

    我需要做的是添加:

    fnCallback(data);
    

    到成功回调,数据出现在表格中!

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2021-12-11
      • 2018-10-16
      • 2013-11-15
      相关资源
      最近更新 更多