希望有人可以帮忙解决这个问题。我建立了一个基于较新的Angular 2的离子2应用程序,我熟悉以前版本的Angular,但仍然试图计算这整个打字稿。
我的基本get querystrings的API设置(例如domain.com?state=ca&city=somename)
export class TestPage {
public state: string ='ca';
public city: string = null;
constructor(private http: Http){}
public submit() {
let url = "http://localhost/api";
let payload = {"state": this.state, "city": this.city};
this.$http.get(url, payload).subscribe(result => {
//result
}, err => {
//do something with the error
}
)
}
}
当我执行此操作时,它会将我的API网址拉得很好,我可以收到回复,但是请求中没有发送任何查询字符串。它只是发送http://localhost/api
。如果我console.log
有效载荷就好了。
最终我试图让它做https://localhost/api?state=ca&city=example
看一些例子,我真的找不到任何直截了当的东西。
使用这个较新版本的Angular,是否无法在http
上获取有效负载?上面的代码只是一个例子。我有很多查询字符串,这就是我希望向它发送有效载荷的原因。
任何帮助或建议将不胜感激。
答案 0 :(得分:1)
Http.get方法将一个实现 RequestOptionsArgs 的对象作为第二个参数。
该对象的搜索字段可用于设置字符串或URLSearchParams对象。
一个例子:
// Parameters obj-
let params: URLSearchParams = new URLSearchParams();
params.set('state', this.state);
params.set('city', this.city);
//Http request-
return this.http.get('http://localhost/api', {
search: params
}).subscribe(
(response) => this.onGetForecastResult(response.json()),
(error) => this.onGetForecastError(error.json()),
() => this.onGetForecastComplete()
);
文档:here