簡體   English   中英

無法通過角度4中的http.post()發布變量

[英]Unable to post variable through http.post() in angular 4

我在angular 4中遇到問題....我正在使用離子3構建混合應用程序。

我必須使用php作為API的服務器端語言,在將變量發布到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'的值傳遞給infoarray.php上的API,但我正在將請求編碼為json ...但沒有得到變數

  1. 檢查您的PHP代碼,可能是您缺少從Post獲取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) 

在處理參數時使用JSON.stringify()方法:

var json = {var1: 'test'};

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

您的params = 'json='+json實際上將得到以下結果:“ json = [object 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'}"

JSON.stringify(json);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM