Angular 2 GET参数保持为空
嗨,我想在GET请求中发送参数,但我的搜索参数仍然为空,这是我的代码:Angular 2 GET参数保持为空,angular,typescript,Angular,Typescript,嗨,我想在GET请求中发送参数,但我的搜索参数仍然为空,这是我的代码: private jwt2() { let currentUser = JSON.parse(localStorage.getItem('currentUser')); console.log('current.token ' + currentUser.token); let params: URLSearchParams = new URLSearchPar
private jwt2() {
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
console.log('current.token ' + currentUser.token);
let params: URLSearchParams = new URLSearchParams(); //PARAMS
params.set('pageSize', '6'); //pageSize
let headers = new Headers({ 'Authorization': currentUser });
console.log("params: " + params); //here I can see correct params
return new RequestOptions({ headers: headers, search: params });
// }
}
我可以在chrome中看到正确的标题,但无法看到搜索参数:
search
URLSearchParams
paramsMap
Map(0)
size(0)
__proto__
Map
[[Entries]]
Array(0)
length(0)
如果我没有设置参数并手动将参数写入搜索选项,如下所示:
returnnewrequestoptions({headers:headers,search:'pageSize=6'})代码>
它可以工作尝试检索函数外部的数据,这样当组件加载时,它将在调用Get请求
之前存在
用于设置LocalStorageData的函数
private get currentUser(): string {
return localStorage.getItem('currentUser');
}
myCurrentUser = JSON.parse(this. currentUser);
检索数据
private get currentUser(): string {
return localStorage.getItem('currentUser');
}
myCurrentUser = JSON.parse(this. currentUser);
获取请求
private setDefaultPaymentMethod(payid: string) {
const params: URLSearchParams = new URLSearchParams();
params.set('currentUser', this.myCurrentUser);
return this.http.get('Path/URL/End?point'
{ search: params })
.map((res: Response) => res.json())
.subscribe((res) => {
console.log(res);
});
}
尝试在函数外部检索数据,以便在组件加载时,它将在调用Get请求之前存在
用于设置LocalStorageData的函数
private get currentUser(): string {
return localStorage.getItem('currentUser');
}
myCurrentUser = JSON.parse(this. currentUser);
检索数据
private get currentUser(): string {
return localStorage.getItem('currentUser');
}
myCurrentUser = JSON.parse(this. currentUser);
获取请求
private setDefaultPaymentMethod(payid: string) {
const params: URLSearchParams = new URLSearchParams();
params.set('currentUser', this.myCurrentUser);
return this.http.get('Path/URL/End?point'
{ search: params })
.map((res: Response) => res.json())
.subscribe((res) => {
console.log(res);
});
}
问题在于:
RequestOptions({ headers: headers, search: params });
因为如果我用这样的字符串
RequestOptions({ headers: headers, search: 'pageSize=6' });
它可以工作,在chrome中,我看到以下选项:
{"method":null,"headers":{"Authorization":["Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYW5pZWxlIiwiaXAiOiI3OS4xLjMzLjEzOCIsImV4cCI6MTQ5MTM4MDIyMn0.Z9Y2l7-VDE_Rd8jEqhZ2Sdpx-is5nBeRamtkYrRtt_4oGWXomkhg6-ig87BL0PI5kL11sLf24lpytK8YDeiWMQ"]},"body":null,"url":null,"params":{"rawParams":"pageSize=6","queryEncoder":{},"paramsMap":{}},"withCredentials":null,"responseType":null}
如果我使用参数,我的rawParams将保持为空问题在于:
RequestOptions({ headers: headers, search: params });
因为如果我用这样的字符串
RequestOptions({ headers: headers, search: 'pageSize=6' });
它可以工作,在chrome中,我看到以下选项:
{"method":null,"headers":{"Authorization":["Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYW5pZWxlIiwiaXAiOiI3OS4xLjMzLjEzOCIsImV4cCI6MTQ5MTM4MDIyMn0.Z9Y2l7-VDE_Rd8jEqhZ2Sdpx-is5nBeRamtkYrRtt_4oGWXomkhg6-ig87BL0PI5kL11sLf24lpytK8YDeiWMQ"]},"body":null,"url":null,"params":{"rawParams":"pageSize=6","queryEncoder":{},"paramsMap":{}},"withCredentials":null,"responseType":null}
如果我使用params,我的rawParams将保持为空尝试使用params.toString()
尝试使用params.toString()
我遇到了相同的问题,因为我没有导入URLSearchParams
import { URLSearchParams } from '@angular/http';
如果不显式导入URLSearchParams,则可以完成,但参数请求为空
另外请注意,RequestOptions属性search已被弃用,您应该使用参数:
RequestOptions({ headers: headers, params : myParams })
代替
RequestOptions({ headers: headers, search : params })
使用params.toString()的解决方案是一个很好的解决方案,因为requestoptions参数也可以是字符串或URLSearchParams:
export interface RequestOptionsArgs {
url?: string | null;
method?: string | RequestMethod | null;
/** @deprecated from 4.0.0. Use params instead. */
search?: string | URLSearchParams | {
[key: string]: any | any[];
} | null;
params?: string | URLSearchParams | {
[key: string]: any | any[];
} | null;
headers?: Headers | null;
body?: any;
withCredentials?: boolean | null;
responseType?: ResponseContentType | null;
}
它通过传递字符串来避免问题。在这种情况下,没有必要使用URLSearchParams。我遇到了相同的问题,因为我没有导入URLSearchParams
import { URLSearchParams } from '@angular/http';
如果不显式导入URLSearchParams,则可以完成,但参数请求为空
另外请注意,RequestOptions属性search已被弃用,您应该使用参数:
RequestOptions({ headers: headers, params : myParams })
代替
RequestOptions({ headers: headers, search : params })
使用params.toString()的解决方案是一个很好的解决方案,因为requestoptions参数也可以是字符串或URLSearchParams:
export interface RequestOptionsArgs {
url?: string | null;
method?: string | RequestMethod | null;
/** @deprecated from 4.0.0. Use params instead. */
search?: string | URLSearchParams | {
[key: string]: any | any[];
} | null;
params?: string | URLSearchParams | {
[key: string]: any | any[];
} | null;
headers?: Headers | null;
body?: any;
withCredentials?: boolean | null;
responseType?: ResponseContentType | null;
}
它通过传递字符串来避免问题。在这种情况下,使用URLSearchParams是没有意义的。我的问题不是currentuser,我的问题是pageSize参数没有传递到RequestOptions,因此get请求无法看到正确的参数pageSize参数,pageSize参数应该不带“6”,因此,换言之,这是不带“”的6,它在任何地方都应该是整数,但它是字符串吗?我不认为这是集合声明set(name:string,value:string):void代码>否,我的意思是你正在处理发送到的服务器上的代码吗?另外,请检查chrome工具中的“网络”选项卡,单击请求,然后复制并粘贴标题和响应选项卡。我的问题不是currentuser,我的问题是pageSize参数没有传递到RequestOptions中,因此get请求看不到正确的参数页面大小param应该没有'6',所以这是没有''的6,换句话说,它应该是一个整数,不管它在哪里结束,但它是字符串吗?我不认为这是集合声明set(name:string,value:string):void代码>不,我的意思是你正在处理发送到的服务器上的代码吗?你也可以检查chrome工具中的网络选项卡,单击请求,然后复制并粘贴标题和响应选项卡。这并不能回答你的问题。。。你只需进一步阐述你的问题。答案应该提供实际的解决方案:)好吧,这是答案吗?从我看来,这不是一个答案吗?你的参数还是空的?也许我很困惑:这并不能回答你的问题。。。你只需进一步阐述你的问题。答案应该提供实际的解决方案:)好吧,这是答案吗?从我看来,这不是一个答案吗?你的爱人还空着?也许我很困惑:D
import { URLSearchParams } from '@angular/http';