Неправильный вывод объекта JSON

Я получаю JSON из php:

<?php
 require("includes/connection.php");

//$queryString = "home";
$returnArray = array(); 

if (!$server) 
{ 
    die('Connect Error (' . mysqli_connect_errno() . ')' . mysqli_connect_error() );  
} 


$query =    "SELECT * 
            FROM stuff
            WHERE name LIKE '%" . $queryString . "%' 
            ORDER BY name LIMIT 1";

if($result = $server->query($query))
{
    while ($row = $result->fetch_assoc())
    {
        array_push($returnArray, $row);

    }


}           

echo json_encode($returnArray);

?>

И джаваскрипт:

var home = "home";
  $.getJSON("db/getJSON.php", {queryString: ""+home+""},

function(data){

    jsn = JSON.stringify(data);
    $("#outputtester").html(jsn);
        consoleOut("JSON: "+jsn);

   });

Он выводит довольно красивую строку:

[{"UID":"1","IDS":"1,2,3","name":"home","type":"thing","cat_id":"home"}]

Но я думаю, что двух [] там быть не должно, потому что это не массив массивов?

Я попытался поставить эхо "Вещи: ". перед json_encode, чтобы я мог идентифицировать массив массивов. Но это не сработает

Я попытался получить доступ к «данным» без указания строки, как объект, он должен работать с чем-то вроде:

data.UID

or

data.name

но я каждый раз получаю вывод объекта Object, а также когда я их упорядочиваю.

Любая идея, что я делаю неправильно?

Не могу найти целую кучу информации о работе с массивами JSON, все, что я нахожу, вручную создает JSON в коде javascript.


person TrySpace    schedule 22.02.2012    source источник
comment
$returnArray - это массив массивов, поэтому результат кажется хорошим. $returnArray - это массив. Каждый $row представляет собой массив. Вы добавляете $row в $returnArray -> массив массивов. Конечно, если ваш запрос возвращает только одну строку таблицы, вы получите массив, содержащий только один массив. Возможно, вместо этого вы захотите назначить $row на $returnArray.   -  person Felix Kling    schedule 22.02.2012
comment
1) ваш код широко открыт для атак SQL-инъекций, 2) этот вывод JSON верен, вы json кодируете массив строк данных, где строки являются «объектами». Здесь нет проблем (кроме вашего кода запроса).   -  person Chad    schedule 22.02.2012


Ответы (1)


Изменять :

echo json_encode($returnArray);

To:

if($returnArray) {
    echo json_encode($returnArray[0]);
} else{
    // here echo whatever you want to signify there were no results.
}
person driangle    schedule 22.02.2012
comment
Это если он хочет вернуть только первый результат, что делает цикл while глупым. - person Chad; 22.02.2012