2016-10-29 4 views
0

Zunächst einmal. Bitte bedenken Sie meine Fragen.Verwechslung in Angular 2 Http Post Anfrage

Was ich tue, ist nur eine Ajax-Anfrage, die eine Antwortdaten von String zurückgibt.

Hier ist meine php

<?php 
    header('Access-Control-Allow-Origin: *'); 

    echo 'Peenoise Crazy'; 
?> 

Http Anfrage

let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
let options = new RequestOptions({ headers: headers }); 
return this.http.post('./app/parsers/peenoise.php', '', options) 
    .then(val => console.log(val)) 

Dies funktioniert nicht. Aber wenn ich die URL in diese http://localhost:8912/app/parsers/peenoise.php ändere. Es klappt.

Fragen

  1. Warum ./app/parsers/peenoise.php nicht funktioniert?
  2. Wenn ich die URL zu http://localhost:8912/app/parsers/peenoise.php ändern. Warum muss ich header('Access-Control-Allow-Origin: *') setzen? Es befindet sich im selben Ordner meiner App.
  3. Wie http.post zu verwenden, ohne eine URL von http://localhost:8912/route/to/phpfolder.php zu übergeben?

Jede Hilfe wäre willkommen. Bitte führe mich dazu. Danke

+0

quando o Usuario faz uma solicitação usando Ajax Winkel 2, o pedido é de navegador tun cliente . O pedido no mov de servidor para servidor. Por isso, é necessário otilizar o caminho do servidor. lembre-se que no momento em que o aplicativo ist kein navegador do cliente. ist es nicht möglich, eine Anfrage an den Server auf die von Ihnen gewünschte Weise zu stellen. –

+0

Haben Sie versucht, '/ app/parsers/peenoise.php' (ohne den führenden Punkt)? Es scheint, als ob Sie versuchen, Verzeichnispfadnotation zu verwenden, aber ein Punkt wird nicht auf die gleiche Weise interpretiert, wenn es um URLs geht. –

+0

@ user3608792 ja. Ich habe alles versucht und habe keinen Fehler auf der Konsole und funktioniert nicht. –

Antwort

0

Post erfordert eine vollständige oder eine relative URL zu arbeiten. Sie verwenden können:

this.http.post('/parsers/peenoise.php', '', options) 
0

Eigentlich Angular sieht für einen Back-End-Server die Daten zu veröffentlichen, so in Ihrer Post-Anforderung Stellen ist wie unten

this.http.post('./app/parsers/peenoise.php', '', options).then(val => console.log(val)) 

Es versuchen, die Post-Anforderung an dem Ort zu machen vorstellen, Sie bedienen Winkel auf localhost: 4200

http://localhost:4200/app/parsers/peenoise.php 

nun Ihre Fragen zu beantworten:

1) ./app/parsers/peenoise.php nicht funktioniert, weil es tatsächlich versucht, es von Ihrem Backend-Service

2) Sie header('Access-Control-Allow-Origin: *') setzen müssen, zu finden, wenn Sie eine HTTP-Anfrage an einen anderen Server als von dem machen, die Ihre Website Derzeit verwenden Sie, wenn Sie nicht verwenden, dass Sie mit Connection_refused_Error enden.

3) Wenn Sie nur Winkel verwenden wollen, dann gibt es mockAckends, in-memory-web-api

Ein Beispiel mockBackEnd verwendet, ist here