简体   繁体   English

数据表,无法解析来自服务器的JSON数据

[英]datatables, JSON data from server could not be parsed

i'm getting this error : 我收到此错误:

DataTables warning (table id = 'example'): DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.

in belowe code. 在下面的代码中。 i want to send any parameter for this code for server_processing.php and create SQL command with $_GET . 我想为该代码发送server_processing.php任何参数,并使用$_GET创建SQL命令。 this code is showing this result 此代码显示此结果

{"sEcho":0,"iTotalRecords":"1","iTotalDisplayRecords":"112","aaData":[["\u0633\u06cc\u062f \u0645\u062d\u0645\u062f \u0639\u0644\u06cc","\u0645\u062d\u0633\u0646\u06cc","sma_mohseni","2012\/11\/10","50.48.6.52"],["\u0633\u06cc\u062f \u0645\u062d\u0645\u062f \u0639\u0644\u06cc","\u0645\u062d\u0633\u0646\u06cc","sma_mohseni","2012\/11\/10","50.48.6.52"]]}

full result is this link 完整结果是此链接

in checked result of json in www.jsonformatter.curiousconcept.com thats alert me json result is VALID 在www.jsonformatter.curiousconcept.com中json的检查结果中,这提醒我json结果有效

my server_processing.php is: 我的server_processing.php是:

<?php

    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     * Easy set variables
     */

    /* Array of database columns which should be read and sent back to DataTables. Use a space where
     * you want to insert a non-database field (for example a counter or static image)
     */
    $aColumns = array('first_name','last_name','login','date','ip'); 

    /* Indexed column (used for fast and accurate table cardinality) */
    $sIndexColumn = "date";

    /* Database connection information */
    $gaSql['user']       = 'SECURITY ';
    $gaSql['password']   = 'SECURITY ';
    $gaSql['db']         = 'SECURITY ';
    $gaSql['server']     = 'SECURITY ';

    /* 
     * MySQL connection
     */
    $gaSql['link'] =  mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password']  ) or
        die( 'Could not open connection to server' );

    mysql_select_db( $gaSql['db'], $gaSql['link'] ) or 
        die( 'Could not select database '. $gaSql['db'] );
    mysql_query("set names 'utf8'", $gaSql['link']);            

    /* 
     * Paging
     */

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

    /*
     * Ordering
     */
    $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] ) ]."` ".
                    mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
            }
        }

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

    /* 
     * Filtering
     * NOTE this does not match the built-in DataTables filtering which does it
     * word by word on any field. It's possible to do here, but concerned about efficiency
     * on very large tables, and MySQL's regex functionality is very limited
     */
    $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 .= ')';
    }

    /* Individual column filtering */
    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])."%' ";
        }
    }


    /*
     * SQL queries
     * Get data to display
     */

    $sQuery = "SELECT at_members.member_id , at_members.login , at_members.status , at_statistic.date , at_statistic.time , 
          at_statistic.ip , at_members.first_name , at_members.last_name FROM
          ( I'M EDITED THIS LINES FOR SECURITY )
          at_members.status = '{$_GET['$status']}' {$_GET['con']}
          {$_GET['fDate']}  {$_GET['tDate']} 
          {$_GET['nameDore']} ";

    $rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());

    /* Data set length after filtering */
    $sQuery = "
        SELECT FOUND_ROWS()
    ";
    $rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
    $aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
    $iFilteredTotal = $aResultFilterTotal[0];

    /* Total data set length */
    // echo $sQuery.'<br/>';

    $rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
    $aResultTotal = mysql_fetch_array($rResultTotal);
    $iTotal = $aResultTotal[0];


    /*
     * Output
     */
    $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] == "version" )
            {
                /* Special output formatting for 'version' column */
                $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 );
?>

HTML: HTML:

<div  style="width:100%;">
    <table cellpadding="0" cellspacing="0" border="0" class="display" id="example" >
        <thead>
            <tr>
                <th width="35%"></th>
                <th width="35%"></th>
                <th width="15%"></th>
                <th width="15%"></th>
                <th width="15%"></th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

You are using invalid characters, check your result here 您使用的字符无效,请在此处检查结果

Its this one : \م\ح\\u06 33\ن\ی 其这一个: \م\ح\\u06 33\ن\ی

You have a space between u06 and 33 您在u0633之间有一个空格

Also, you might have a problem with the jQuery validation plugin, check this link for more information. 另外,您可能对jQuery验证插件有疑问,请查看链接以获取更多信息。

This is the typical type of answer, when a script error has happend on your server side script. 当服务器端脚本上发生脚本错误时,这是​​典型的答案类型。 Try with the chrome web inspector or firebug and the network tab to inspect what result is coming back. 尝试使用chrome web inspector或firebug以及network标签来检查返回的结果。

Very likely, there will be something like 很可能会出现类似

PHP error foo on line bar
{your: "json", here: "if", it: "only", was: "a warning", and, "not an error"}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM