浏览器不会自动显示JSON内容

时间:2017-04-06 12:45:32

标签: php mysql angularjs json

我的PHP(SLIM框架)正在生成一个JSON文件。我已经检查了JSON验证器上的文件,一切都很好。当我在浏览器中输入我的本地AngularJS主文件index.html时,它不会自动显示JSON文件,但会询问我是否打开/保存文件。我正在使用来自Xampp的Apache虚拟主机MySQL。我希望浏览器显示JSON而不在本地保存文件,因此,当我完成项目并将其附加到域时,任何人都可以在他的计算机上显示JSON内容。

这是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);
    }
});`

行。根据Fred的建议,我已经改变了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);
    header('Content-type: application/json');

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

但仍然没有任何变化。

2 个答案:

答案 0 :(得分:0)

正如@RichardAtHome所说,检查http标题中的内容类型,如果没有问题的话。 你可以使用JSON.stringify()然后输出它作为普通字符串或做一些格式化。 如果不是这种情况,那么用一些代码解释你的问题并输出截图。

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

答案 1 :(得分:0)

在输出JSON字符串之前,请设置标题,如下所示:

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

这应该告诉浏览器期待JSON内容。