У меня есть приложение 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
....