Получить значение HTML-формы в скрипте PHP, используя Angular Service - PullRequest
0 голосов
/ 04 июня 2018

У меня есть приложение Angular 5 с контактной формой, и я хочу иметь возможность получать данные из этой формы через службу в моем скрипте PHP.

Вот мой HTML

contact.html

<div class="">
   <input [(ngModel)]= "subjet" name="subjet" type="text">
   <label for="">subject</label>
</div>

Когда я нажимаю на кнопку «из», я вызываю функцию sendmail(subject) в том же компоненте.

contact.component.ts

export class ContactComponent implements OnInit {

constructor(private  sendMailService:SendMailService) { }

    sendmail(subjet):void{
         this.sendMailService.performGetEx().subscribe(  (v => 
         console.log('value: ', v)),
         (e => console.log('error: ', e)),
         (() => console.log('the sequence completed! :' ,subjet)));
    }

И, наконец, мой сервис:

Injectable()
export class SendMailService {

  private url = 'assets/php/sendmail.php'

 constructor(private http:HttpClient) { }
   performGetEx():Observable<any>{
     return this.http.get<any>(this.url,
     {
         responseType: 'text' as 'json'
     });
}

Это сервис, которыйиспользуйте PHP Script, но я не могу найти способ восстановить значение subject в моем PHP Script.

Когда я что-то делаю, $sujet = $_POST['sujet']; это не работает.Это могло бы сработать, если бы мой скрипт находился в той же папке, что и мой contact component, но это не так.

Знаете, как я могу это сделать?

ОБНОВЛЕНИЕ 1:

Эта ссылка может быть полезной, это может быть решением для людей, которые имеют эту проблему: Угловая HTTP-запись в PHP и неопределенная

Я в моем случае, когдаЯ делаю следующее:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$subject = $request->subject;

У меня ошибка, потому что моя переменная $postdata пуста!До сих пор не знаю, почему

ОБНОВЛЕНИЕ 2:

Как @Simos сказал, я проверил, и я не видел данных, отправленных из Angular в моей сети.

Итак, я изменил свой метод SendmailService class с get на post.

Injectable()
export class SendMailService {

  private url = 'assets/php/sendmail.php'

 constructor(private http:HttpClient) { }
   performGetEx():Observable<any>{
     return this.http.post<any>(this.url,
     {
         responseType: 'text' as 'json'
     });
}

Я получил другую ошибку HttpErrorResponse SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse.

У меня уже была эта ошибкараньше и пришлось добавить reponseType: 'text' as 'json', чтобы избежать этого ... А теперь он не работает с методом post ....

...