javascript - angular 2 服务不调用 php 文件

标签 javascript php json angular angular2-services

我正在学习 Angular 2,我做了一个连接到数据库的测试,但是我得到一个错误:SyntaxError: unexpected token < in JSON at position 0.

所以我的 xampp 在端口 80 或 443 上工作。 我测试的 url(我使用的是 angular cli)是:localhost:4200

这是我的尝试。我有这种方法的服务:

  getUsers(){
return this._http.get('getusers.php')
  .map(res => res.json());
 }

getusers.php 文件位于公用文件夹中。 这是它的内容。非常基本的只是为了获得一些结果并将它们作为 json 发送回去:

 // set up the connection variables
    $db_name  = 'mydb';
    $hostname = 'localhost';
    $username = 'myusername';
    $password = 'mypass';

    // connect to the database
    $dbh = new PDO("mysql:host=$hostname;dbname=$db_name", $username, $password);


    $sql = 'SELECT * FROM users';


    $stmt = $dbh->prepare( $sql );


    $stmt->execute();


    $result = $stmt->fetchAll( PDO::FETCH_ASSOC );


    $json = json_encode( $result );

    echo $json;

所以我在导入服务的组件中添加,在构造函数中初始化它并订阅:

  constructor(private _usersService: UsersService) {}

  ngOnInit() {
     this._usersService.getUsers()
       .subscribe(
         data => this.getUsers = JSON.stringify(data),
         error => alert(error),
         () => console.log("Finihed")
      );
  }

我在这里错过了什么。我做了很多 ajax 调用,但第一次使用 angular。也许是港口?还是我缺少的其他东西?

最好的问候

最佳答案

所以既然是跨域的情况就是用两个端口。在您的通话中使用带有端口的完整网址: http://localhost:80/yourproject/public/getContacts.php

并在您的服务器端在输出之前添加 CORS header :

header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Headers: X-Requested-With');
header('Content-Type: application/json');

echo json_encode($result);

因为我只是在测试,所以我使用了 *,但不推荐这样做。通常允许一个特定的 url。

关于javascript - angular 2 服务不调用 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38543560/

相关文章:

javascript - 条件渲染不能防止渲染

javascript - 在 PHP 中接收和发送回 json 数据

java - 为什么 play.libs.Json.toJson 返回一个空对象?

php - 将图像从 PHP Web 服务发送到移动客户端

javascript - 当 asp :Textbox disabled 时禁用 DatePicker

javascript - 使用 Python 从 Arduino 读取串行数据

php - 如何将 VueJS 变量传递到 Laravel Blade 路由

php - SQLSTATE[42S02] : Base table or view not found: Laravel

xml - 将 xml 转换为 JSON 的库,反之亦然

javascript - if img.src === img.src === img.src - 无法让它工作