Ich habe versucht, dies für fast einen Tag herauszufinden, ohne Glück. Ich habe eine einfache http.post
Anfrage:Angular2 http.post sendet keine JSON-Daten an API
import { Component } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'SendPost',
})
export class SendPostComponent {
constructor(
private http:Http,
) {}
private urlPost:string = 'www.mydomain.com/api/order.php'
private addToBasket() {
var data = {
foo: "bar",
foo1: "another"
}
var postData = JSON.stringify(data);
let headers = new Headers({'Content-Type': 'application/json'}); //x-www-form-urlencoded
headers.append('Access-Control-Allow-Methods', "GET, POST, OPTIONS");
let options = new RequestOptions({ headers: headers });
this.http.post(
this.urlPost,
postData,
options
)
.toPromise()
.then((res) => {this.extractData(res)});
}
private extractData(res: Response) {
console.log('extractData:', res);
}
}
ich den API-Endpunkt absolutes Minimum gestreift: keine .htacces, sondern nur die PHP-Datei diesen einfache Code:
<?php print_r(json_encode($_REQUEST)); die; ?>
Ich halte ein leeres Array immer in Rückkehr. Wenn ich jedoch den Code wie folgt ändere:
var data2 = 'foo=bar&foo1=another'
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
Dann die $ _REQUEST Objekte bekommt meine Daten. Was vermisse ich?
Wenn Sie die Ergebnisse mit URL-Parametern erhalten, dann ist es php verwandt, nicht angular verwandt! Ich bin nicht vertraut mit PHP, aber vielleicht sollten Sie es JSON Post-Anfragen zu akzeptieren – trichetriche
'JSON.stringify' wird eine JSON-String zurückgeben, aber was Sie brauchen, ist https://StackOverflow.com/questions/1714786/query-string -Encodierung eines Javascript-Objekts –