Angular 2访问PHP api,不返回json但返回文件

时间:2016-02-13 21:54:08

标签: javascript json angular

Angular 2正在使用以下代码访问我的php文件:

this._http.get('../api/src/1.0/get/images.php').subscribe(res => {
    alert(JSON.stringify(res));
});

提供此警报LocalHost:3000说

{
    "_body": "<?php\n\nrequire_once '../../orm/connection.php';\n\n$images = R::getAll( 'SELECT * FROM image');\nheader('Content-Type: application/json');\necho json_encode($images);\n\n?>\n",
    "status": 200,
    "statusText": "Ok",
    "headers": {
        "Date": ["Sat",
        " 13 Feb 2016 21:11:26 GMT"],
        "Cache-Control": ["public",
        " max-age=0"],
        "Last-Modified": ["Sat",
        " 13 Feb 2016 20:39:49 GMT"],
        "Accept-Ranges": ["bytes"],
        "ETag": ["W/\"a7-152dc5c6608\""],
        "Content-Length": ["167"],
        "Content-Type": ["application/octet-stream"]
    },
    "type": 2,
    "url": "http://localhost:3000/api/src/1.0/get/images.php"
}

PHP文件

<?php

require_once '../../orm/connection.php';

$images = R::getAll( 'SELECT * FROM image');
header('Content-Type: application/json');
echo json_encode($images);

?>

我希望警报只包含JSON数据。 如果我通过它的url直接转到文件,它只给我JSON数据。 我怎么做到这一点?

2 个答案:

答案 0 :(得分:1)

您正在位置../api/src/1.0/get/images.php调用静态文件,并获得它的内容。

您必须使用服务器运行.php文件,而不是使用http.get(...)调用它。您可以使用带有php -S localhost:3333的php localhost服务器,您需要在项目根目录中运行此命令(php项目)

答案 1 :(得分:1)

根据您的回复,您似乎要求images.php"Content-Type":["application/octet-stream"]。尝试配置http.get()以询问json:

const HEADER = { headers: new Headers({ 'Content-Type': 'application/json' }) };
this._http.get('../api/src/1.0/get/images.php', HEADER).subscribe(res => {
    alert(JSON.stringify(res));
});