[英]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 ...但沒有得到變數
檢查您的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+'¶m2=' +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.