2017-07-14 138 views
2

我試圖從名爲Users的MySQL表中填充jqGrid加載數據。 JS腳本是這樣的:parsererror:SyntaxError:JSON.parse:JSON數據的第2行第1列的意外字符200 OK

jQuery腳本

$(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}); 
}); 

現在,這是users_grid_load_data.php文件:

$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); 

的jqGrid的加載,但它的中間顯示消息:

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"]}]} 

我可以看到從MySQL加載的註冊t有能力的用戶,但我陷入了這個錯誤。 任何人都可以幫助我嗎?我非常感謝任何幫助。 預先感謝您。

+0

「總」:1失蹤「S也許 – uTeisT

+1

** WARNING **:當使用'mysqli'你應該使用[參數化查詢(HTTP: //php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)到添加用戶數據到您的查詢**不要**使用字符串插值或連接來實現這一點,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)**從不**將'$ _POST','$ _GET'或**任意**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,可能會造成很大的危害。 – tadman

+0

''''cell'之前''''''''' $ responce-> rows [$ i]'cell'] =' – Andreas

回答

1

這可能是因爲任何變量的未定義錯誤。從你的代碼是當你在發送JSON數據來創建

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

命名爲$responcewhile loop您使用的是以前沒有定義的屬性rows,所以儘量使用像之前聲明它的響應變量, jqgrid,所以你的迴應必須是json而不是別的。爲了防止響應添加使用error_reporting()像其他人一樣的錯誤,

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

_「爲了防止錯誤...」,因爲如果我沒有看到錯誤,那麼將不會有錯誤... – Andreas

+0

這只是針對生產版本和開發版本,他可以啓用它。 –

+0

我試過了你的提示,但還是得到了同樣的錯誤@Rohan Kumar – Alexandre1973

相關問題