【发布时间】:2017-09-01 13:25:00
【问题描述】:
我已经尝试了将近一天的时间来解决这个问题,但没有运气。
我有一个简单的http.post 请求:
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 相关的,而不是 angular 相关的!我不熟悉 PHP,但也许你应该将其设置为接受 JSON 发布请求
-
JSON.stringify将返回一个 json 字符串,但您需要的是 stackoverflow.com/questions/1714786/…