I tried server processing for jQuery data table but getting error:

我尝试了jQuery数据表的服务器处理,但收到错误:

DataTables warning: table id=DataTables_Table_0 - Ajax error

DataTables警告:table id = DataTables_Table_0 - Ajax错误

and when I remove below code from server.php

当我从server.php中删除下面的代码

require( '/machines/jquery/ssp.class.php' );

echo json_encode(
    SSP::simple( $_POST, $sql_details, $table, $primaryKey, $columns )
);

then getting error:

然后得到错误:

DataTables warning: table id=DataTables_Table_0 - Invalid JSON response

DataTables警告:table id = DataTables_Table_0 - 无效的JSON响应

Also note that, previously require was: require( 'ssp.class.php' ); as per https://datatables.net/examples/server_side/post.html but I tried to find ssp.class.php in entire / directory in my ubuntu OS but there was no such php file so searched google and copied that file and kept under /machines/jquery/ssp.class.php but still no luck.

另请注意,之前的要求是:require('ssp.class.php');按照https://datatables.net/examples/server_side/post.html,但我试图找到在整个/目录ssp.class.php在我的Ubuntu操作系统,但没有这样的PHP文件,以便谷歌搜索和复制的文件,保存在/machines/jquery/ssp.class.php下,但仍然没有运气。

I have already checked all the php, pdp .. settings and it is correct so something is wrong in the code or my server doesn't understand the way jQuery given the server processing example.

我已经检查了所有的php,pdp ..设置,这是正确的,所以代码中的错误或我的服务器不理解jQuery给出服务器处理示例的方式。

There is no problem for client side data processing but server side data processing gives above error.

客户端数据处理没有问题,但服务器端数据处理会产生上述错误。

 root@m100:~# php -i|grep PDO
 PDO
 PDO support => enabled
 PDO drivers => mysql
 PDO Driver for MySQL => enabled

client.php:

<div>

<h3>Machines Data</h3>
<div class="container">
    <div id="machines-data" style="padding-left: 15px; padding-right:  15px;"></div>

    <table class="table machines-data" border="1">

    </table>

</div>

</div>


<script>

$(document).ready(function () {

});

<script>
 $(function(){
    $("#progress").show();

        $(".machines-data").dataTable({
            "processing": true,
            "serverSide": true,
            "ajax": { "url": "/machines/server.php", "type": "POST" },
            "columns": [
        { "data": "id" },
        { "data": "ip" },
        { "data": "machine" },
        { "data": "action" },
    ]

        });
  })
 </script>

server.php:

<?php

ignore_user_abort(true);

if($_POST) {

$table = '1_machine_data';

$primaryKey = 'id';

 $columns = array(
     array( 'db' => 'id', 'dt' => 'id' ),
     array( 'db' => 'ip',  'dt' => 'ip' ),
     array( 'db' => 'machine',   'dt' => 'machine' ),
     array( 'db' => 'action',     'dt' => 'action' ),
 );

$sql_details = array(
    'user' => 'root',
    'pass' => 'pass',
    'db'   => 'machine',
    'host' => 'localhost'
);

require( '/machines/jquery/ssp.class.php' );

echo json_encode(
     SSP::simple( $_POST, $sql_details, $table, $primaryKey, $columns )
);

exit (0);

}

?>

2 个解决方案

#1


Here is the answer! I used php+datatable server processing code, instead of SSP stuff..

这是答案!我使用php + datatable服务器处理代码,而不是SSP的东西..

<?php

ignore_user_abort(true);

if($_POST) {

    $aColumns = array( 'id', 'ip', 'machine', 'status' );

    $sIndexColumn = "id";

    $sTable = "1_machines";

    $gaSql['user']       = "root";
    $gaSql['password']   = "pwd";
    $gaSql['db']         = "machines";
    $gaSql['server']     = "localhost";

    function fatal_error ( $sErrorMessage = '' )
    {
        header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
        die( $sErrorMessage );
    }

    if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password']  ) )
    {
        fatal_error( 'Could not open connection to server' );
    }

    if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
    {
        fatal_error( 'Could not select database ' );
    }

    $sLimit = "";
    if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )
    {
        $sLimit = "LIMIT ".intval( $_GET['iDisplayStart'] ).", ".
            intval( $_GET['iDisplayLength'] );
    }

    $sOrder = "";
    if ( isset( $_GET['iSortCol_0'] ) )
    {
        $sOrder = "ORDER BY  ";
        for ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ )
        {
            if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" )
            {
                $sOrder .= "`".$aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
                    ($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", ";
            }
        }

        $sOrder = substr_replace( $sOrder, "", -2 );
        if ( $sOrder == "ORDER BY" )
        {
            $sOrder = "";
        }
    }

    $sWhere = "";
    if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" )
    {
        $sWhere = "WHERE (";
        for ( $i=0 ; $i<count($aColumns) ; $i++ )
        {
            $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
        }
        $sWhere = substr_replace( $sWhere, "", -3 );
        $sWhere .= ')';
    }

    for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
        {
            if ( $sWhere == "" )
            {
                $sWhere = "WHERE ";
            }
            else
            {
                $sWhere .= " AND ";
            }
            $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
        }
    }


    $sQuery = "
        SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
        FROM   $sTable
        $sWhere
        $sOrder
        $sLimit
        ";
    $rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );

    $sQuery = "
        SELECT FOUND_ROWS()
    ";
    $rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
    $aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
    $iFilteredTotal = $aResultFilterTotal[0];

    $sQuery = "
        SELECT COUNT(`".$sIndexColumn."`)
        FROM   $sTable
    ";
    $rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
    $aResultTotal = mysql_fetch_array($rResultTotal);
    $iTotal = $aResultTotal[0];

    $output = array(
        "sEcho" => intval($_GET['sEcho']),
        "iTotalRecords" => $iTotal,
        "iTotalDisplayRecords" => $iFilteredTotal,
        "aaData" => array()
    );

    while ( $aRow = mysql_fetch_array( $rResult ) )
    {
        $row = array();
        for ( $i=0 ; $i<count($aColumns) ; $i++ )
        {
            if ( $aColumns[$i] == "started_on" )
            {
                $row[] = ($aRow[ $aColumns[$i] ]=="0") ? ' - ' : $aRow[ $aColumns[$i] ];
            }
            else if ( $aColumns[$i] != ' ' )
            {
                /* General output */
                $row[] = $aRow[ $aColumns[$i] ];
            }
        }
        $output['aaData'][] = $row;
    }

    echo json_encode( $output );

    exit (0);

}

?>

更多相关文章

  1. 如何在使用jquery验证和自定义错误放置时清除错误
  2. Ajax调用php脚本返回404错误
  3. Jquery验证插件,获取错误字符串
  4. Jquery注册服务器控件事件与判断控件的值
  5. 与symfony一起使用ajax时出现500内部服务器错误
  6. Chrome显示错误为:由于内容安全策略,拒绝执行内联脚本
  7. Java applet错误…怎么了?
  8. Jquery - 表单验证,为错误消息添加css样式
  9. Ajax技术--服务器返回数据格式(HTML,XML,JSON)

随机推荐

  1. android gpuimage显示的缩放和剪裁模式
  2. Android中的Parcelable接口
  3. Android弹窗
  4. Android版本对照
  5. 组件居中显示 安卓
  6. Eclipse 运行Android程序在虚拟机中,出现
  7. android源代码下载及编译
  8. Android图文布局【整理】
  9. Android(安卓)开源项目分类汇总
  10. Android WebView example