javascript - Angular HTTPClient POST正文不发送

标签 javascript node.js angular post angular-httpclient

目前,我正在尝试从一个 Angular 前端将姓名、电子邮件和消息发布到在同一 nginx 服务器中运行的 php 脚本,然后运行 ​​phpmailer 以发送包含姓名、电子邮件和消息的电子邮件。这是到目前为止的代码:

import { Component, OnInit } from '@angular/core';
import { Email } from './email';
import {ContactService} from './contact.service';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {NgForm} from '@angular/forms';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/x-www-form-urlencoded'
  })
};

const email = new Email('', '', '');

@Component({
  selector: 'app-contact',
  templateUrl: './contact.component.html',
  styleUrls: ['./contact.component.css'],
  providers: [ContactService]
})
export class ContactComponent implements OnInit {

  email = new Email('', '', '');

  constructor(private http: HttpClient) { }

  sendEmail(form: NgForm) {
    const value = form.value;
    const senderName = value.name;
    const senderEmail = value.email;
    const senderMessage = value.message;
    this.sendMail(senderName, senderEmail, senderMessage);
  }

  sendMail(senderName, senderEmail, senderMessage) {
    console.log(senderName + ' ' + senderEmail + ' ' + senderMessage);
    this.http.post('https://ruffstuffcostumes.tk/assets/scripts/email.php',
      {
        name: senderName,
        email: senderEmail,
        message: senderMessage,
      },
      httpOptions
      )
      .subscribe(
        (val) => {
          console.log('POST call successful value returned in body',
            val);
        },
        response => {
          console.log('POST call in error', response);
        },
        () => {
          console.log('The POST observable is now completed.');
        });
  }

  ngOnInit() {
  }

}

当我通过 postman 运行 POST 请求以检查它时,它运行得非常好并发送了包含所需元素的电子邮件,但是当我使用此脚本执行查询时,即使 console.log(senderName + ' ' + senderEmail + ' ' + senderMessage) 确实显示了值,它似乎根本没有将它们张贴在正文中,我得到的只是这样一个事实,即使发送了一封邮件,它是在电子邮件正文中没有任何这些值的情况下发送的。

这可能是跨域问题(如果是的话,最好的解决方法是什么?),还是我只是犯了一些愚蠢的错误?

最佳答案

只是为了完整性。我通过切换到发送 JSON 数据并在 php 端解析它解决了这个问题

关于javascript - Angular HTTPClient POST正文不发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118618/

相关文章:

javascript - 在 DIV 中打开生成的 URL

javascript - Nodejs 事件循环

node.js - 尝试在一组包上执行 lerna run --parallel

node.js - AWS SQS Node.js 脚本不等待

angular - 如何在 guard angular 2 中获取请求 url

javascript - 这是如何在 javascript 构造函数属性中工作的

javascript - 使用 ASP.NET MVC 摆脱 JavaScript 中的硬编码字符串

javascript - 函数不是函数?

angular - 如何使 "Service Worker"在本地网络中工作?

php - Jquery POST 提交空白变量