2017-07-14 1 views
2

Ich versuche, ein jqGrid aufzufüllen, das Daten aus einer MySQL-Tabelle namens Users lädt. Das js Skript sieht wie folgt aus:parserehler: SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 2 Spalte 1 der JSON-Daten 200 OK

JQuery Skript

$(function() { 
    "use strict"; 
    jQuery("#list2").jqGrid({ 
     url:'users_grid_load_data.php?q=2', 
     datatype: "json", 
     mtype: "GET",   
     colNames:['Id','First Name', 'Last Name', 'Username','Level'], 
     colModel:[ 
      {name:'id_user',index:'id_user', width:55}, 
      {name:'firstname',index:'firstname', width:90}, 
      {name:'lastname',index:'lastname', width:90}, 
      {name:'username',index:'username', width:90}, 
      {name:'level',index:'level', width:80, align:"right"}  
     ], 
     rowNum:10, rowList:[10,20,30], 
     pager: '#pager2', 
     sortname: 'id_user', 
     viewrecords: true, 
     sortorder: "asc", 
     height:"auto", 
     width:"auto", 
     caption:"LIST OF USERS" 
    }); 
    jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false}); 
}); 

Nun ist dies das users_grid_load_data.php Datei:

$page = $_GET['page']; 
$limit = $_GET['rows']; 
$sidx = $_GET['sidx']; 
$sord = $_GET['sord']; 

$result = $mysqli->query("SELECT COUNT(*) AS count FROM users"); 
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 

$count = $row['count']; 
if($count > 0 && $limit > 0) { 
     $total_pages = ceil($count/$limit); 
} else { 
     $total_pages = 0; 
} 
if ($page > $total_pages) $page=$total_pages; 
$start = $limit*$page - $limit; 
if($start <0) $start = 0; 

$SQL = "SELECT * FROM users ORDER BY $sidx $sord LIMIT $start , $limit"; 
$result = $mysqli->query($SQL); 

$i=0; 
$responce = new stdClass(); 
$responce->page = $page; 
$responce->total = $total_pages; 
$responce->records = $count; 
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { 
    $responce->rows[$i]['id']=$row['id_user']; 
    $responce->rows[$i]'cell']= 
       array($row['id_user'],$row['firstname'], 
        $row['lastname'],$row['username'],$row['level']); 
    $i++; 
} 

echo json_encode($responce); 

Die jqGrid geladen wird, sondern in der Mitte zeigt die Meldung:

parsererror: SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON data 200 OK {"page":"1","total":1,"records":"1","rows":[{"id":"4","cell":["4","Alexandre","Araujo","alexaraujo73","2"]}]} 

Ich kann das Register aus dem MySQL t geladen sehen Benutzer, aber ich bin in diesem Fehler stecken geblieben. Kann mir jemand helfen? Ich schätze jede Hilfe sehr. Vielen Dank im Voraus.

+0

"total": 1 Missing „s vielleicht – uTeisT

+1

** WARNUNG **: Bei der Verwendung von' mysqli' Sie verwenden sollen [parametrisierte Abfragen] (http: //php.net/manual/de/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php) zu Fügen Sie Benutzerdaten zu Ihrer Abfrage hinzu. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL-Injektionsfehler] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** Setzen Sie '$ _POST',' $ _GET' oder ** beliebige ** Benutzerdaten direkt in eine Abfrage, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman

+0

Missing '[' vor ''Zelle']': ' $ response-> rows [$ i] 'cell'] = ' – Andreas

Antwort

1

Es kann wegen undefiniertem Fehler einer Variablen sein. Von Ihrem Code erstellen Sie eine Antwortvariable als $responce benannt und in while loop Sie eine Eigenschaft rows verwenden, die vorher nicht definiert ist, so versuchen, es zu erklären, bevor Sie wie,

$responce = new stdClass(); 
$responce->page = $page; 
$responce->total = $total_pages; 
$responce->records = $count; 
$responce->rows=array();// create an array of rows here 
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { 
    $arr = array('id'=>$row['id_user'],'cell'=>array($row['id_user'], 
            $row['firstname'], 
            $row['lastname'], 
            $row['username'], 
            $row['level']) // cell closing 
     ); // closing of arr 
    $responce->rows[]=$arr; // push it to $rows of $reponce 
    //$i++; // no need of it 
} 

Wie Sie JSON-Daten senden zu jqgrid, also muss deine Antwort json und sonst nichts sein. Um in Reaktion error_reporting() verwenden wie, andere hinzugefügt Fehler zu vermeiden

// hide all notice/warnings 
error_reporting(0); 
+0

_ "Um Fehler zu vermeiden ..." _ weil, wenn ich keinen Fehler sehe, wird es keinen Fehler geben ... – Andreas

+0

Es war nur für die Produktionsversion und für die Entwicklungsversion kann er es aktivieren. –

+0

Ich habe Ihre Tipps versucht, aber immer noch den gleichen Fehler @Rohan Kumar – Alexandre1973

Verwandte Themen