0
我一直在试图弄清楚这一点几乎每天,没有运气。 我有一个简单http.post
要求:Angular2 http.post不会JSON数据发送到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);
}
}
我条纹的API端点降到最低:不.htacces,只是php文件这个简单的代码:
<?php print_r(json_encode($_REQUEST)); die; ?>
我不断收到空数组返回。但是,如果我改变这样的代码:
var data2 = 'foo=bar&foo1=another'
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
然后$ _REQUEST对象得到我的数据。我错过了什么?
如果您使用URL参数获得结果,那么它与php相关,而不是角度相关!我不熟悉PHP,但也许你应该将它设置为接受JSON post请求 – trichetriche
'JSON.stringify'会返回一个JSON字符串,但你需要的是https://stackoverflow.com/questions/1714786/query-string -encoding--A-JavaScript的对象的 –