我的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);
}
});`
但仍然没有任何变化。
答案 0 :(得分:0)
正如@RichardAtHome所说,检查http标题中的内容类型,如果没有问题的话。 你可以使用JSON.stringify()然后输出它作为普通字符串或做一些格式化。 如果不是这种情况,那么用一些代码解释你的问题并输出截图。
答案 1 :(得分:0)
在输出JSON字符串之前,请设置标题,如下所示:
header('Content-type: application/json');
这应该告诉浏览器期待JSON内容。