Javascript 无法通过angular 4中的http.post()发布变量

Javascript 无法通过angular 4中的http.post()发布变量,javascript,php,angular,ionic3,Javascript,Php,Angular,Ionic3,我在第四节遇到了问题。。。。我正在使用离子3构建混合应用程序 我必须使用php作为API的服务器端语言,我在将变量发布到http.post请求时遇到问题 变量不会传递到php文件 我用来从home.ts调用API的方法是: 我可以很好地从API获得响应,但问题是我无法将变量“var1”的值传递给我的API 在infoarray.php上,我将请求编码为json。。。但是没有获取变量在处理参数时使用JSON.stringify方法: var json = {var1: 'test'}; var

我在第四节遇到了问题。。。。我正在使用离子3构建混合应用程序

我必须使用php作为API的服务器端语言,我在将变量发布到http.post请求时遇到问题

变量不会传递到php文件

我用来从home.ts调用API的方法是:

我可以很好地从API获得响应,但问题是我无法将变量“var1”的值传递给我的API 在infoarray.php上,我将请求编码为json。。。但是没有获取变量

在处理参数时使用JSON.stringify方法:

var json = {var1: 'test'};

var params = 'json='+JSON.stringify(json);
您的params='json='+json实际上将导致以下结果:json=[object]。这是因为您没有首先对对象进行字符串化,因此:

var params = 'json=' + JSON.stringify(json); // "json={"var1":"test"}"

使用JSON.stringify并将头放在RequestOptions类中

let headers = new Headers();
    headers.append('Content-Type', 'application/json');
let requestOpt = new RequestOptions({ headers: headers });
    const bodyStr = JSON.stringify({var: value});

this.http
    .post(this.vocabularyPostUrl, bodyStr, requestOpt)

你必须把对象串起来。否则您将得到[object][object],而不是{var1:'test'}

检查您的PHP代码,可能是您缺少从Post获取JSON内容

$data = json_decode(file_get_contents('php://input'), true);
print_r($data);
echo $data["param"];
否则,请尝试在表单数据中添加参数

let headers      = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options      = new RequestOptions({ headers: headers }); // Create a request option
let url = "SERVER_URL";
let body = 'param1='+value1+'&param2=' +value2;

this.http.post(url, body, options)

您是如何在服务器端访问var1的?是的,我正在访问php文件的$\u POST['var1'],使用json而不是var1访问它。稍后的json.var1一般可以获得var1的值。读这个:你可以用它作为基础来为Angular 4创建一些东西。我为Angular4/ColdFusion创建了一个类似的转换函数;可以将其转换回PHP使用—我认为数组处理需要更改:
$data = json_decode(file_get_contents('php://input'), true);
print_r($data);
echo $data["param"];
let headers      = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options      = new RequestOptions({ headers: headers }); // Create a request option
let url = "SERVER_URL";
let body = 'param1='+value1+'&param2=' +value2;

this.http.post(url, body, options)