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.
"total": 1 Missing „s vielleicht – uTeisT
** 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
Missing '[' vor ''Zelle']': ' $ response-> rows [$ i] 'cell'] = ' – Andreas