Mi PHP (marco SLIM) está generando un archivo JSON. He comprobado el archivo en el validador JSON y todo está bien. Cuando ingreso index.html, mi archivo principal local AngularJS en el navegador, no muestra el archivo JSON automáticamente, pero me pregunta si debo abrir / guardar el archivo. Estoy usando el host virtual Apache, MySQL, de Xampp. Quiero que el navegador muestre el JSON sin guardar el archivo localmente, de modo que, cuando termine el proyecto y lo adjunte a un dominio, cualquiera pueda mostrar el contenido JSON en su computadora.

Este es el archivo php:

`<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

// Get All Customers
$app->get('/api/calendar', function (Request $request, Response $response) {

    // echo 'CALENDAR'; });

    $sql = "SELECT * FROM days";

    try {
    // Get DB Object
    $dbcalendar = new dbcalendar();
    //Connect
    $dbcalendar = $dbcalendar->connect();

    $stmt = $dbcalendar->query($sql);
    $dbcalendar = $stmt->fetchAll(PDO::FETCH_OBJ);
    // $dbcalendar = null;

    return $response->withJson($dbcalendar);

    } catch(PDOException $e) {
        $error = array('error' => array('text' => $e->getMessage()));
        return $response->withJson($error,500);
    }
});`

OKAY. He cambiado el archivo php (espero que sea correcto) de acuerdo con la sugerencia de Fred:

`<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

// Get All Customers
$app->get('/api/calendar', function (Request $request, Response $response) {

    // echo 'CALENDAR'; });

    $sql = "SELECT * FROM days";

    try {
    // Get DB Object
    $dbcalendar = new dbcalendar();
    //Connect
    $dbcalendar = $dbcalendar->connect();

    $stmt = $dbcalendar->query($sql);
    $dbcalendar = $stmt->fetchAll(PDO::FETCH_OBJ);
    // $dbcalendar = null;

    return $response->withJson($dbcalendar);
    header('Content-type: application/json');

    } catch(PDOException $e) {
        $error = array('error' => array('text' => $e->getMessage()));
        return $response->withJson($error,500);
    }
});`

Pero todavía no hay ningún cambio.

-1
Rico11112016 6 abr. 2017 a las 15:45

2 respuestas

La mejor respuesta

Antes de generar su cadena JSON, configure el encabezado, así:

header('Content-type: application/json');

Eso debería decirle al navegador que espere contenido JSON.

0
fredrover 6 abr. 2017 a las 13:10

Como dijo @RichardAtHome, verifique su tipo de contenido en el encabezado http y si está bien, entonces. puede usar JSON.stringify () y luego generarlo como una cadena normal o formatear. Si este no es el caso, explique su problema con algún código y captura de pantalla de salida también.

https://www.w3schools.com/js/js_json_stringify.asp

0
Rick_C137 6 abr. 2017 a las 12:59