2017-06-22 32 views
0

我得到问题的角度4 ....我使用的建筑混合的应用程序离子3.无法通过http.post张贴变量()在角4

我必须使用PHP作为服务器端语言对于APIs,我在发布变量到http.post()请求时遇到问题...

变量未传递给php文件。

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

var json = {var1: 'test'}; 

var params = 'json='+json; 

let headers = new Headers(); 

headers.append('Content-Type', 'application/json'); 

http.post("http://example.com/infoarray.php", params, headers).subscribe (re => { 
console.log(re) 
}) 

我能够得到API就好了反应,但问题是我不能接受的价值变量“VAR1”我的API 上infoarray.php我编码到JSON的请求......但没有得到变量

+0

添加PARAMS你是如何在服务器端访问VAR1? –

+0

是的,我正在访问$ _POST ['var1']到php文件 –

+1

使用** json **而不是var1访问它。稍后的json.var1,您可以获得var1 –

回答

0

使用JSON.stringify()方法在处理PARAMS:

var json = {var1: 'test'}; 

var params = 'json='+JSON.stringify(json); 
0

您的params = 'json='+json实际上会产生这样的结果:“json = [object Object]”。那是因为你没有字符串化对象首先,这是因为这样做:

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

使用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) 
0

你必须字符串化物体。否则,您将以"[object][object]"而不是"{var1: 'test'}"结束。

JSON.stringify(json); 
1
  1. 检查你的PHP代码,可能是你缺少摆脱后JSON内容。

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

    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)