Php JSON.parse意外令牌多维数组

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

你好,我有一个简单的问题。我从数据库中提取了一些数据,并对其进行json编码,然后从PHP脚本通过AJAX发送到html文件。我想用JSON解析这些数据。数据如下所示:

$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循环之外,非常感谢您,我可以帮助:-)