Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度7不´;t发送了xhr请求_Angular_Typescript - Fatal编程技术网

Angular 角度7不´;t发送了xhr请求

Angular 角度7不´;t发送了xhr请求,angular,typescript,Angular,Typescript,这是我的第一个问题,所以我尽量简短 这就是我的角度方法: delete(id: number): Observable<User[]> { console.log(id); return this.http.delete(`${this.baseUrl}/deleteUser`) .pipe(map(res => { const filteredUsers = this.users.filter((user) => {

这是我的第一个问题,所以我尽量简短

这就是我的角度方法:

delete(id: number): Observable<User[]> {
    console.log(id);
    return this.http.delete(`${this.baseUrl}/deleteUser`)
      .pipe(map(res => {
          const filteredUsers = this.users.filter((user) => {
            return +user['id'] !== +id;
          });
          return this.users = filteredUsers;
        }),
        catchError(this.handleError));
  }
例如,当我键入localhost/api/deleteUser.php=?18时,它会成功删除用户id为18的用户

我在我的应用程序中多次起诉这个请求,它在其他任何地方都有效。我只是复制粘贴了它并更改了我的类/数组/对象名

有人能指出我的错误或给我一个替代方法的例子吗

这就是我的.htaccess看起来的样子

# Remove the php extension from the filename
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]


# Set the headers for the restful api
Header always set Access-Control-Allow-Origin http://localhost:4200
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT, UPDATE"
以及我在所有API中需要的connect.php

<?php

// db credentials
define('DB_HOST', 'localhost');
define('DB_USER', 'example');
define('DB_PASS', 'example');
define('DB_NAME', 'example');

// Connect with the database.
function connect()
{
    $connect = mysqli_connect(DB_HOST ,DB_USER ,DB_PASS ,DB_NAME);

    if (mysqli_connect_errno($connect)) {
        die("Failed to connect:" . mysqli_connect_error());
    }

    mysqli_set_charset($connect, "utf8");

    return $connect;
}

$con = connect();

您没有在调用delete函数的地方添加代码,但我假设您像调用
someService.delete()一样调用它

它将不起作用,因为您返回一个可观察的,它只在订阅时起作用。所以你需要把它改成

someService.delete(someId.subscribe()

someService.delete(someId).订阅(回调)

希望此帮助

删除(id:number):可观察{
delete(id: number): Observable<User[]> {
    const params = new HttpParams()
    .set('id', id.toString());

    return this.http.delete(`${this.baseUrl}/deleteUser`, {params: params})
      .pipe(map(res => {
          const filteredUsers = this.users.filter((user) => {
            return +user['id'] !== +id;
          });
          return this.users = filteredUsers;
        }),
        catchError(this.handleError));
  }
const params=新的HttpParams() .set('id',id.toString()); 返回this.http.delete(`${this.baseUrl}/deleteUser`,{params:params}) .pipe(映射(res=>{ const filteredUsers=this.users.filter((用户)=>{ return+user['id']!==id; }); 返回this.users=filteredUsers; }), catchError(this.handleError)); }
在订阅我的调用后,我将参数添加到我的delete方法中,现在它可以工作了!
谢谢大家的帮助

您遇到了什么错误?您的
delete
方法定义了http delete并返回了一个可观察的值。您需要
订阅
可观察到的内容,它才能真正触发请求。我尝试订阅,它的工作原理与发送xhr相同,但现在它不发送id,并且我收到了CORS飞行前错误,尽管我只发送了一个xhr。在我的代码的另一部分中删除可以很好地工作。我的调用有点混乱,因为我通过另一个方法调用这个delete()。我正在检查我的用户对象中的一些值,如果它是真的,则调用delete函数的方法。我将尝试直接调用delete而不使用此方法,因为CORS是另一个问题。你可以在这里找到一些关于它的信息,在这里我试着直接给它打电话,但没有改变。我对CORS没有任何问题,因为它可以很好地用于所有其他api调用,这似乎是我调用delete()的方式或其他一些小问题,我就是不能理解它是否在delete请求中发送正确的头,当然还有url
delete(id: number): Observable<User[]> {
    const params = new HttpParams()
    .set('id', id.toString());

    return this.http.delete(`${this.baseUrl}/deleteUser`, {params: params})
      .pipe(map(res => {
          const filteredUsers = this.users.filter((user) => {
            return +user['id'] !== +id;
          });
          return this.users = filteredUsers;
        }),
        catchError(this.handleError));
  }