2012-12-09 4 views
0

을 구문 분석 할 수 없습니다 :datatables은 서버에서 JSON 데이터 내가이 오류를 받고 있어요

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

belowe 코드. 나는 server_processing.php에 대해이 코드에 대한 매개 변수를 보내고 $_GET으로 SQL 명령을 작성하려고합니다. 이 코드는 JSON 결과 나 경고 www.jsonformatter.curiousconcept.com에서 JSON의 확인 결과이 결과

{"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

그게 전부 보여주는 것은

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 :

<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> 

답변

0

이것은 서버 측 스크립트에서 스크립트 오류가 발생한 전형적인 유형의 응답입니다. 크롬 웹 속성이나 방화 광구 및 네트워크 탭을 사용하여 어떤 결과가 다시 나타나는지 확인하십시오.

매우 가능성이, 당신은 잘못된 문자를 사용하는

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

jsonformatter.curiousconcept.com alert me json 결과가 유효 함 –

+0

오류가 발생했습니다. 내 대답을 확인하십시오. – Lotzki

+0

유효성 검사 결과 : 유효합니다. 내 결과 json simplized.full 결과입니다이 http://paste.debian.net/215201/ –

1

, 당신의 결과 확인과 같이있을 것 here

그것이 하나 \u0645\u062d\u06 33\u0646\u06cc

당신은 u0633 사이에 공간이

또한 j에 문제가있을 수 있습니다. 쿼리 유효성 검사 플러그인, 자세한 내용은 this 링크를 확인하십시오.

관련 문제