0

Hello I have simple question. I have some data fetched from database and json encoded and sent to html file over AJAX from PHP script. I want to JSON parse that data. Data looks like this:

enter image description here

And in PHP file like this:

$profesors = array
                (
                'id' => ($id),
                'name' => ($profesor)
                );

When I try to JSON parse it with JSON.parse() command I get "unexpected token {". Does anyone have some suggestion what to do? Also if it would be easier for achieving my goal I can use some other data type than array I am using, if someone knows better way...

EDIT

my PHP code that generates 2d array

<?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";
?>
3
  • 4
    That's not valid JSON. It should probably be something like [{}, {}]. How are creating/echoing it? You should be creating the structure you want, then calling json_encode once (and only once). Commented Nov 10, 2014 at 22:44
  • ahh, I understand...I have uploaded my code that generates it,, so I would be really glad if you can check it Commented Nov 10, 2014 at 23:59
  • I made it, just added [] after $profesors and moved echo json_encode($profesors); outside of while loop, thank you very much Commented Nov 11, 2014 at 0:15

2 Answers 2

1

You are doing echo json_encode($profesors); inside your while loop. Don't do that. You should only ever call json_encode once.

Try something like this:

$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);
Sign up to request clarification or add additional context in comments.

Comments

1

The unexpected token is the second opening curly brace. It's expecting one object because there are no array brackets. Either have your response look like this:

[{
    "id"   : "1",
    "name" : "Ivan Nikolaj"
 },
 {
    "id"   : "2",
    "name" : "Zdravko Topic"
 }]

or this :

{
   "id"   : "1",
   "name" : "Ivan Nikolaj"
}

or even better, this:

 {
     "status"   : 200,
     "response" : [
         {
             "id"   : 1,
             "name" : "Ivan Nikolaj"
         },
         {
             "id"   : 2,
             "name" : "Zdravko Topic"
         }
     ]
 }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.