私はこれを、運がない一日近く把握しようとしています。Angular2 http.postはAPIにJSONデータを送信しません
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);
}
}
は、私は絶対最小限にAPIエンドポイントをストライピング:いいえ.htacces、ちょうどPHPファイルこの単純なコード:私は空の配列内を得続ける
<?php print_r(json_encode($_REQUEST)); die; ?>
は、私はシンプルなhttp.post
要求を持っています戻る。しかし、私がこのようなコードを変更した場合:
var data2 = 'foo=bar&foo1=another'
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
その後、$ _REQUESTオブジェクトは自分のデータを取得します。私は何が欠けていますか?
URLパラメータを使用して結果を取得した場合、それはPHPに関連しており、角度関連ではありません。私はPHPに精通していませんが、おそらくJSON投稿要求を受け入れるように設定する必要があります – trichetriche
'JSON.stringify'はJSON文字列を返しますが、必要なのはhttps://stackoverflow.com/questions/1714786/query-stringです-encoding-of-a-javascript-object –