Php 将MySQL数据加载到网格时发生jqGrid JSON.parse错误

Php 将MySQL数据加载到网格时发生jqGrid JSON.parse错误,php,jquery,json,mysqli,free-jqgrid,Php,Jquery,Json,Mysqli,Free Jqgrid,我已经对代码做了一些更改,但在将数据从MySQL表加载到JqGrid时仍然出现错误。这就是错误: parsererror:SyntaxError:JSON.parse:JSON数据200 OK的第2行第1列出现意外字符{“page”:“1”,“total”:1,“records”:“1”,“rows”:[{“id”:“4”,“cell”:[“4”,“Alexandre”,“Araujo”,“alexaraujo73”,“2”]}} 这是我的PHP代码: <?php $page = $_

我已经对代码做了一些更改,但在将数据从MySQL表加载到JqGrid时仍然出现错误。这就是错误:

parsererror:SyntaxError:JSON.parse:JSON数据200 OK的第2行第1列出现意外字符
{“page”:“1”,“total”:1,“records”:“1”,“rows”:[{“id”:“4”,“cell”:[“4”,“Alexandre”,“Araujo”,“alexaraujo73”,“2”]}}

这是我的PHP代码:

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

谢谢你的帮助!谢谢

如果数据类型参数设置正确,另一个可能的问题是字符编码。假设您在数据库中使用utf-8。您应该执行一些步骤来解决此问题(如果有其他字符集,请相应地进行更改)

您应该在html头中设置如下字符集

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最后,您应该在php中设置适当的头,如

header('Content-Type: text/plain; charset=utf-8');
echo json_encode($responce);

如果datatype参数设置正确,另一个可能的问题是字符编码。假设您在数据库中使用utf-8。您应该执行一些步骤来解决此问题(如果有其他字符集,请相应地进行更改)

您应该在html头中设置如下字符集

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最后,您应该在php中设置适当的头,如

header('Content-Type: text/plain; charset=utf-8');
echo json_encode($responce);

我感谢大家的帮助。在尝试了所有的可能性之后,我决定在另一台运行Windows7的电脑上尝试这个脚本,它运行得非常好。我还在网上试了试,结果很顺利。我不知道为什么,但脚本在Windows 10上不起作用。我的本地主机服务器是在XAMPP下运行的,它工作得很好

我感谢大家的帮助。在尝试了所有的可能性之后,我决定在另一台运行Windows7的电脑上尝试这个脚本,它运行得非常好。我还在网上试了试,结果很顺利。我不知道为什么,但脚本在Windows 10上不起作用。我的本地主机服务器是在XAMPP下运行的,它工作得很好

在jqgrid脚本中添加'ajaxGridOptions:{contentType:'application/json;charset=utf-8'},'line,确切位置为@PankajMakwana?尝试在
url
之后添加,但我的朋友@PankajMakwana没有改变。您的代码使用了不存在的
dataType
参数。你应该把它改成
datatype
。在jqgrid脚本中添加'ajaxGridOptions:{contentType:'application/json;charset=utf-8'},'行@PankajMakwana到底在哪里?试着在
url
后面加上,但我的朋友@PankajMakwana没有改变。您的代码使用了不存在的
dataType
参数。您应该将其修复为
数据类型
。我完全按照您的建议做了,但错误仍然存在。我使用了一个条件来检查是否应用了utf-8,在我添加了您的指令之后,它看起来已经正确地应用了。您好,JSON响应正常。唯一可能发生的事情是,您可能在php代码中执行另一个echo或print,请检查此项,如果可用,请删除它。我完全按照您的建议执行了操作,但错误仍然存在。我使用了一个条件来检查是否应用了utf-8,在我添加了您的指令之后,它看起来已经正确地应用了。您好,JSON响应正常。剩下的唯一可能发生的事情是,您可能会在php代码中执行另一个echo或print,请检查此项,如果可用,请将其删除。