所以,我在Javascript中有下一个代码,其中值在URL中发送
//params = 5
function httpPostAsync(url, params){
// test: curl -X POST http://url/brightness/5
var http = new XMLHttpRequest();
http.open("POST", "/brightness/"+ params , true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
//Popup good for debugging
}
}
http.send(null);
}
我的问题是,我怎么能在Angular中做到这一点? 我有下一个代码,但它不会在URL
中发送值'5'//服务
postValue(data) {
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
let params = new URLSearchParams();
params.append('value', data);
return this.http.post(url, params.toString(), options)
.timeoutWith(2000);
}
//元器件
let value = 5;
this._localserverService.postValue(value).subscribe();
我知道当我使用form-urlencoded内容类型发送数据时,我应该使用key = value对以查询字符串格式发送数据。但是我的旧代码中不需要这样做。
我也知道http.post的第二个参数是消息的主体(有效负载),而不是URL搜索参数。
我应该做些什么不同?
谢谢!
答案 0 :(得分:0)
在这种情况下,您只需将data
附加到您的网址:
postValue(data) {
// You might not even need to set the header, as you body is anyway empty...
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
return this.http.post(`url/${data}`, null, options)
.timeoutWith(2000);
}
URLSearchParams
用于查询字符串参数(类似http://url/brightness?value=5
),但如果您希望5
作为网址的一部分(http://url/brightness/5
),上面的代码应该这样做。