2

Tengo una clase en PHP en donde genero datos en JSON mediante funciones. Al finalizar imprimo los datos en consola mediante objetos.. y hasta ahí todo bien...

class Grafica{

 public function subcategoria(){

     //codigo
     print json_encode($datos, JSON_NUMERIC_CHECK);

 }


 public function prioridad(){

     // Codigo
     print json_encode($datos, JSON_NUMERIC_CHECK);

 }
}

$sub = new Grafica();
$sub -> subcategoria();

$prio = new Grafica();
$prio -> prioridad();

Al querer imprimir los datos mediante AJAX, tengo el siguiente código:

$.getJSON("../../grafica.php", function(json) {
    options.series = json;
    chart = new Highcharts.Chart(options);
});

Al tener un objeto me grafica los datos sin ningún problema, el detalle va cuando tengo 2 objetos, se tendría que pasar como parámetro el objeto a imprimir, pero no logro entender cómo. Alguna sugerencia que me puedan dar!! Gracias!

3
  • No se entiende muy bien. ¿Quieres saber cómo imprimir más de un objeto o quieres saber cómo evitar que pase más de un objeto?
    – A. Cedano
    Commented el 31 oct. 2019 a las 19:35
  • Imprimir más de un objeto. Commented el 31 oct. 2019 a las 20:09
  • Se supone que en ese caso json sería un array de objetos, entonces podrías leerlo así: $.each( json, function( index, obj ){ console.log(obj.series); });
    – A. Cedano
    Commented el 31 oct. 2019 a las 20:24

2 respuestas 2

0

La clase Grafica está imprimiendo dos objetos JSON seguidos.

{datos}{datos}

getJSON no sabe que hacer con esa estructura.

Tienes que hacer que la clase Grafica imprima un array de JSONs

[{datos},{datos}]

O que imprima un JSON anidado.

{"subcategoria": {datos}, "prioridad": {datos}}

En el primer caso, al recibirlo, lo parseas a json y te devuelve un array de estos.

En el segundo caso, al recibirlo, lo parseas a json y al llamar a cada valor (subcategoria y prioridad), te devuelve el json correspondiente.

0

Tienes que crear un objeto json con los campos subcategoría y prioridad para $.getJSON pueda trabajar de manera correcta.

Así debería estar tu código PHP:


class Grafica{

 public function subcategoria(){

     //codigo
     return $datos;

 }


 public function prioridad(){

     // Codigo
     return $datos;

 }
}

$sub = new Grafica();
$subCat = $sub->subcategoria();
$prioridad = $sub->prioridad();
$arr = [
    'subcategoria' => $subCat,
    'prioridad' => $prioridad
];
echo json_encode($arr, JSON_NUMERIC_CHECK);

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.