Php JSON.parse意外令牌多维数组
你好,我有一个简单的问题。我从数据库中提取了一些数据,并对其进行json编码,然后从PHP脚本通过AJAX发送到html文件。我想用JSON解析这些数据。数据如下所示:Php JSON.parse意外令牌多维数组,php,ajax,json,token,Php,Ajax,Json,Token,你好,我有一个简单的问题。我从数据库中提取了一些数据,并对其进行json编码,然后从PHP脚本通过AJAX发送到html文件。我想用JSON解析这些数据。数据如下所示: $profesors = array ( 'id' => ($id), 'name' => ($profesor) ); $profesors = array(); while($res
$profesors = array
(
'id' => ($id),
'name' => ($profesor)
);
$profesors = array();
while($result2 = mysql_fetch_array($queryData1))
{
$id=$result2['idprof'];
$profesor=$result2['ime']." ".$result2['prezime'];
$profesors[] = array(
'id' => $id,
'name' => $profesor
);
}
echo json_encode($profesors);
在PHP文件中,如下所示:
$profesors = array
(
'id' => ($id),
'name' => ($profesor)
);
$profesors = array();
while($result2 = mysql_fetch_array($queryData1))
{
$id=$result2['idprof'];
$profesor=$result2['ime']." ".$result2['prezime'];
$profesors[] = array(
'id' => $id,
'name' => $profesor
);
}
echo json_encode($profesors);
当我尝试用JSON.parse()命令对其进行JSON解析时,我得到了“意外的标记{”。有人有什么建议吗?如果这更容易实现我的目标,我可以使用一些其他数据类型,而不是我正在使用的数组,如果有人知道更好的方法
编辑
生成2d数组的PHP代码
<?php
$var=$_POST["oblast"];
$connection = mysql_connect('localhost','root','pass');
if (!$connection) {die("not successfull" . mysql_error());}
$result = mysql_query('set character set utf8', $connection);
$result = mysql_query('set names utf8', $connection);
$db_select = mysql_select_db("fakultet",$connection);
$brojac=0;
$profesor="";
//$data = array(array());
$queryData = mysql_query("SELECT * FROM predmet WHERE idpred = '$var'");
while($result1 = mysql_fetch_array($queryData))
{
$prof=$result1['idprof'];
$queryData1 = mysql_query("SELECT * FROM profesori WHERE idprof = '$prof'");
while($result2 = mysql_fetch_array($queryData1))
{
$id=$result2['idprof'];
$profesor=$result2['ime']." ".$result2['prezime'];
$profesors = array
(
'id' => ($id),
'name' => ($profesor)
);
echo json_encode($profesors);
}
//echo($result1['idprof']);
//$data[]=$result['idprof'];
}
//echo "$data";
?>
意外标记是第二个开始的花括号。它需要一个对象,因为没有数组括号。或者让您的响应如下所示:
[{
"id" : "1",
"name" : "Ivan Nikolaj"
},
{
"id" : "2",
"name" : "Zdravko Topic"
}]
或者这个:
{
"id" : "1",
"name" : "Ivan Nikolaj"
}
或者更好,这是:
{
"status" : 200,
"response" : [
{
"id" : 1,
"name" : "Ivan Nikolaj"
},
{
"id" : 2,
"name" : "Zdravko Topic"
}
]
}
您正在while
循环中执行echo json\u encode($profesors);
操作。不要这样做。您应该只调用json\u encode
一次
试着这样做:
$profesors = array
(
'id' => ($id),
'name' => ($profesor)
);
$profesors = array();
while($result2 = mysql_fetch_array($queryData1))
{
$id=$result2['idprof'];
$profesor=$result2['ime']." ".$result2['prezime'];
$profesors[] = array(
'id' => $id,
'name' => $profesor
);
}
echo json_encode($profesors);
这不是有效的JSON。它可能类似于[{},{}]
。如何创建/回显它?您应该创建所需的结构,然后调用JSON\u encode
一次(并且只调用一次).ah,我明白了…我已经上传了生成它的代码,所以如果您能检查一下,我会非常高兴。我制作了它,只是在$profesors之后添加了[]并移动了echo json_encode($profesors);在while循环之外,非常感谢您,我可以帮助:-)