Angular 6和PHP语法错误:意外标记<;在JSON.parse(<;匿名>;)的位置0处的JSON中

Angular 6和PHP语法错误:意外标记<;在JSON.parse(<;匿名>;)的位置0处的JSON中,php,json,angular,httpclient,angular6,Php,Json,Angular,Httpclient,Angular6,我有以下PHP类: <?php //header('Access-Control-Allow-Headers: *'); //header('Content-Type: application/json'); //header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS'); error_reporting(E_ALL); class api { private $us

我有以下PHP类:

<?php

//header('Access-Control-Allow-Headers: *');
//header('Content-Type: application/json');
//header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');

error_reporting(E_ALL);

class api {
    private $username ="root";
    private $password ="...";
    private $db="...";
    private $host = "localhost";

    public $conn;

    //Connection

    public function connection(){
        try{
            $this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $this->conn->exec("SET CHARACTER SET utf8");

            return $this->conn;
        }
        catch(PDOException $e){
            return $e->getMessage();
        }

    }

    //Login

    public function login($conn, $user){
        $login = "SELECT username FROM login WHERE username=:user LIMIT 1";
        $execLogin = $this->conn->prepare($login);
        $execLogin->bindValue(":user", $user);
        $execLogin->execute();
        $res = $execLogin->rowCount();

        return $res;
        // if($res>0)
        // {
        //     return json_encode($res);
        // }
        // else{
        //     echo 0;
        // }
    }

}

?>
下面是按钮html:

<a id="btn-login"  (click)="login()" class="btn btn-success">Login </a>

错误:SyntaxError:JSON中位于位置0处的意外标记< XMLHttpRequest.onLoad上的JSON.parse() ()在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask ()位于Object.onInvokeTask ()在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask ()在 Zone.push../node_modules/Zone.js/dist/Zone.js.Zone.runTask ()在 ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask 在invokeTask处[作为调用]() ()在 XMLHttpRequest.globalZoneAwareCallback ()留言:“出乎意料 标记<在JSON中的位置0“

下面是一个屏幕截图:

在网络选项卡中,我从login.php返回了一个错误:

注意:未定义索引:中的凭据 第8行的C:\wamp64\www\dev\scripts\login.php


如果你检查一下我的login.php,我已经对这一行进行了注释,所以我不知道为什么会给我这样一个错误。

好的,我找到了解决方案:

我似乎应该添加以下标题:

headerOptions.append('Access-Control-Allow-Origin', '*');
headerOptions.append('Access-Control-Request-Headers', '*');
headerOptions.append('Content-Type', 'application/json');
headerOptions.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
在Apache中,我们应该转到Apache服务并检查每个模块的标题

然后,我们应该更改httpd.conf,并执行以下操作:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</IfModule>

标题集访问控制允许原点:*

好的,我找到了解决方案:

我似乎应该添加以下标题:

headerOptions.append('Access-Control-Allow-Origin', '*');
headerOptions.append('Access-Control-Request-Headers', '*');
headerOptions.append('Content-Type', 'application/json');
headerOptions.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
在Apache中,我们应该转到Apache服务并检查每个模块的标题

然后,我们应该更改httpd.conf,并执行以下操作:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</IfModule>

标题集访问控制允许原点:*

当我试图将一条字符串消息(如:
res.send(“来自节点的消息”)
从节点发送到另一个节点时,出现了相同的错误

我刚刚将字符串更改为JSON格式,如
{“msg”:“messagefrom node”}
,之后我得到了数据


我在添加这个
res.setHeader('Content-Type','text/plain')
后尝试过,它在开始时返回了相同的错误

当我试图将一条字符串消息(如:
res.send(“来自节点的消息”)
)从节点发送到节点时,出现了相同的错误

我刚刚将字符串更改为JSON格式,如
{“msg”:“messagefrom node”}
,之后我得到了数据


我在添加这个
res.setHeader('Content-Type','text/plain')
后尝试过,它在开始时返回了相同的错误

在网络中显示什么响应?login.php凭据第8行的错误未定义,但这一行已注释。那么它为什么要读它map
console.log
之后的
map中的code>尝试了它并得到一个新错误
错误TS2339:属性“json”在类型“HttpResponse”上不存在
网络中显示了什么响应?login.php凭据第8行的错误未定义,但这一行已注释。那么它为什么要读它map
中,在
console.log
之后执行code>操作。尝试该操作并获得新错误
错误TS2339:类型“HttpResponse”上不存在属性“json”