У меня есть приложение 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
способ ….
Задача ещё не решена.
Других решений пока нет …