如何在Angular 4中发出非ajax HTTP发布请求

时间:2018-10-15 18:54:26

标签: javascript angular typescript http

我的问题很简单...如何制作带有角度4中的参数的帖子HttpRequest。我找不到示例...我发现的示例正在使用HttpClient,但这不是我所需要的

3 个答案:

答案 0 :(得分:0)

app.module.ts

import { HttpClientModule } '@angular/common/http';

@NgModule ({
imports: [HttpClientModule]
})

在app.component.ts

import { HttpClient } from '@angular/common/http';

export class AppComponent {
   constructor(private http: HttpClient) {
        this.http.post('http://someurl/endpoint', {postData1: 'avb', postdat2: 'xyx}).subscribe(res => console.log(res), error => console.log(error));
   }

}

答案 1 :(得分:0)

没有XHRfetch(又名AJAX),您将无法指示浏览器发出HTTP POST请求。通过导航到某个URL,浏览器发出HTTP GET请求。

如果要直接从浏览器发送HTTP POST请求,则需要使用XHR / fetch。

答案 2 :(得分:0)

回到这一点,尽管我设法使用HttpRequest类使用get方法创建测试,但在使用POST方法时遇到了麻烦。相反,我使用了@ angular / http中的HttpModule及其附带的类。然后,我尝试添加e.preventDefault。尝试一下,看看它是否适合您。另外,您可能需要在此处使用纯JS方法。

在AppComonent中

import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from '@angular/http';
import { Component, OnInit } from "@angular/core";

export class AppComonent implements OnInit {

dataBody =JSON.stringify({
    title: "foo",
    body: "bar",
    userId: 1
  });

  headers;
  requestOptions;
  requestMethod;
  Response;


  constructor(private http: Http) {}

  ngOnInit(
  ) {


  }
onPreventDefault(e){
  e.preventDefault();
}
onPostData(){
  return this.postRequest('https://jsonplaceholder.typicode.com/posts', this.dataBody);
}

 postRequest(url,data) {
    this.headers = new Headers();
    this.headers.append("Content-Type", 'application/json');

    this.requestOptions = new RequestOptions({
        method: RequestMethod.Post,
        url: url,
        headers: this.headers,
        body: data
    });

    return this.http.request(new Request(this.requestOptions))
        .subscribe((res: Response) => {
            if (res) {
              console.log(res);

            }
        });
}


}

在module.ts

import { HttpModule } from '@angular/http';

imports: [HttpModule];

在app-component.html

 <form (ngSubmit)="onPostData()" (submit)="onPreventDefault($event)" target="_blank" action="http://localhost:3000/api/users" >
  <button type="submit" >Submit</button>
  </form>