Здравствуйте, у меня есть простой вопрос. У меня есть некоторые данные, извлеченные из базы данных и JSON в кодировке и отправлены в HTML-файл через AJAX из сценария PHP. Я хочу JSON разобрать эти данные. Данные выглядят так:
И в PHP-файле так:
$profesors = array
(
'id' => ($id),
'name' => ($profesor)
);
Когда я пытаюсь проанализировать JSON с помощью команды JSON.parse (), я получаю «неожиданный токен {». У кого-нибудь есть предложения, что делать? Также, если мне будет легче достичь своей цели, я могу использовать другой тип данных, чем массив, который я использую, если кто-то знает лучший способ …
РЕДАКТИРОВАТЬ
мой код PHP, который генерирует 2d массив
<?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";
?>
Ты делаешь echo json_encode($profesors);
внутри ваш while
петля. Не делай этого. Вы должны только когда-либо звонить json_encode
один раз.
Попробуйте что-то вроде этого:
$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);
Неожиданный знак — вторая открывающая фигурная скобка. Он ожидает один объект, потому что нет скобок массива. Либо ваш ответ будет выглядеть так:
[{
"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"}
]
}