entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

echo json_encode(); no me funciona.

Buenas a todos.
Tengo un array en php, pero lo necesito pasar a string mediante json_encode para poder utilizarlo con Java Script en mi proyecto.
El problema es que cuando intento pasarlo a string y reflejarlo en pantalla no se muestra nada, como si no funcionara el json_encode.

<?php

require 'includes/funciones.php';

$servicios = obtenerServicios();

echo json_encode($servicios);

Esa función obtenerServicios(); esta en funciones.php y tiene como return un array, que a su vez obtiene datos de una base de datos en SQL.

Este es el funciones.php.

<?php

function obtenerServicios() : array {
    try {
        // importar una conexion
        require 'database.php';

        // Escribir el codigo SQL

        $sql = 'SELECT * FROM servicios;';

        $consulta = mysqli_query($db, $sql);

        // Arreglo vacio

        $servicios = [];

        $i = 0;

        // Obtener los resultados
        while( $row = mysqli_fetch_assoc($consulta) ) {
            echo '</pre>';
            $servicios[$i]['id'] = $row['id'];
            $servicios[$i]['nombre'] = $row['nombre'];
            $servicios[$i]['precio'] = $row['precio'];

            $i++;

        }

        //echo '<pre>';
        //var_dump( $servicios );
        //echo '</pre>';

        return $servicios;

    } catch (\Throwable $th) {
        //throw $th;

        var_dump($th);
    }

}

obtenerServicios();

Cuando pongo solo echo $servicios; funciona y se muestra en pantalla, como array, pero cuando lo quiero pasar a string para poder usarlo con Java Script no se muestra nada en pantalla, y no puedo usarlo.

1voto

mchojrin comentado hace

¿No te marca ningún error en un log al menos?

1voto

pedrourday comentado hace

Te fijaste lo que te devuelve la función json_last_error. Lo que puede pasar es que la base de datos esté en una codificación no compatible con UTF8.

0voto

santizic comentado hace

Al final el problema eran dos cosas, el documento php no estaba en UTF-8, y el echo '</pre>'; que me olvide de sacar :/

0voto

Peter comentado hace

@santizic por favor crea una respuesta abajo con la solución y márcala como correcta. :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta