Угловое тело HTTPClient POST не отправляется - PullRequest
0 голосов
/ 01 июля 2018

В настоящее время я пытаюсь отправить имя, адрес электронной почты и сообщение из углового интерфейса в скрипт php, запущенный на том же сервере nginx, который затем запускает 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() {
  }

}

Когда я запустил POST-запрос через почтальон, чтобы проверить его, он работал отлично и отправил электронное письмо, содержащее необходимые элементы, однако, когда я выполняю запрос с помощью этого скрипта, даже если console.log(senderName + ' ' + senderEmail + ' ' + senderMessage) действительно показывает значения, кажется, что они вообще не публикуются в теле, и все, что я получаю, это то, что, хотя письмо было отправлено, оно было отправлено без каких-либо из этих значений в теле письма.

Могут ли это быть проблемы кросс-происхождения (и если да, то каков будет лучший способ обойти это?), Или я просто делаю какую-то глупую ошибку?

1 Ответ

0 голосов
/ 01 июля 2018

Просто для полноты. Я решил проблему, переключившись на отправку данных JSON и анализируя их на стороне php

...