【问题标题】:Angular http client角http客户端
【发布时间】:2019-02-24 03:06:49
【问题描述】:

我的角度有问题,问题如下,获取http客户端的方法,没有从正在监听localhost端口的php中的api获取任何值:123。php代码将是关注

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

//Get todos los usuarios
$app=new \Slim\App;

//Get todos los usuarios
$app->get('/api/clientes', function(Request $request,Response $response){
    include "../src/db.php";
    $query="select * from users";

    $result = mysqli_query($con,$query);    
    if (!$result) {  
        die("Query fail");
    }else {
        $row_cate = mysqli_num_rows($result); 

        if($row_cate == null){
            echo "no existen datos en la dbo";
        }
        else{
            $users=array();
            $cont=0;
            while ($row = mysqli_fetch_array($result)){
                $producto[$cont]=array(
                    "id" => $row['id'],
                    "name" => $row['name'],
                    "email" => $row['email']
                );
                $cont++;
            }
            echo json_encode($producto);
        }
    }
});

和angular客户端方法如下。

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { User } from './user.model';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class DataService {


  constructor(private http:HttpClient) { }

  get(){
    const url="http://localhost:1234/public/api/clientes";
    return new Promise(
      resolve=>{
        this.http.get(url)
        .subscribe(
          data=>resolve(data)
        )
      }
    );
  }

}

感谢您的帮助。

【问题讨论】:

  • 到底是什么问题?请更准确。如果直接从浏览器浏览localhost:1234/public/api/clientes 会输出什么?
  • 不要创建自己的Promise。使用内置转换:return this.http.get(url).toPromise();。这也将允许您在浏览器开发者控制台中查看错误响应。

标签: php angular


【解决方案1】:

get() 方法中的代码无效。如果您希望它返回 Promise,这里有一个更好的代码。

get(): Promise<any> {
  const url="http://localhost:1234/public/api/clientes";
  return this.http.get(url).toPromise();
}

另外,请确保您的服务器响应您期望的数据

如果你刚刚开始使用 Angular,那么我给你的建议是学习 RxJS 并在 Angular 中使用 Observables 而不是 Promises。

【讨论】:

  • 同意。下面是一个使用 Observables 的 http get 的简单示例:stackblitz.com/edit/angular-simple-retrieve-deborahk
  • 我已经设法解决了错误,事实上是一个初学者错误,问题出在 api 中,我没有放置允许执行“get”,“post”过程的标题,等在php中
【解决方案2】:

我已经设法解决了这个错误,事实上是一个初学者错误,问题出在 api 中,我没有在 php 中放置允许执行“get”、“post”等过程的标题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2021-12-05
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多