Angular 特定参数不包括在服务器上的HTTP请求中
我在Angular和Ionic 2中有一个奇怪的问题。我有以下提供商:Angular 特定参数不包括在服务器上的HTTP请求中,angular,typescript,ionic2,Angular,Typescript,Ionic2,我在Angular和Ionic 2中有一个奇怪的问题。我有以下提供商: getTransportations = function (category, maxResults) { let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}`; if (category !== 'all') { let searc
getTransportations = function (category, maxResults) {
let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}`;
if (category !== 'all') {
let search = {
field_filters: [{
key: '2',
operator: 'is',
value: category
}]
};
let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`;
console.log(url);
}
let headers: Headers = new Headers();
headers.append("Authorization", "Basic " + this.bt);
headers.append("Content-type", "application/json");
return this.http.get(url, {
headers: headers
})
.map(response => response.json())
};
如果类别为
all
,则提供程序按预期工作。但是,如果类别是其他的,在Chrome上的开发工具上,在Network的选项卡中,我可以看到被调用的url,而不需要搜索参数。只需\u标签
和分页
。但是,我在if中添加的console.log
起作用,它打印正确的url,如果我在Postman上使用它,我会得到我想要的过滤结果
我尝试了不同的方法来压缩字符串,但我一直都有相同的问题。存在范围问题<代码>let是块范围
let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`;
如果(…){…},则具有属于的作用域。这两个url
是不同的变量,在中分配的变量(除了console.log
)
应该是
url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`;
“不带搜索参数”。您到底看到了什么?查询字符串参数:\u labels=1&paging[page\u size]=15
这是不可能的,至少必须打印出&search=
,因为它不依赖于模板文本字符串中的任何变量。它不依赖于模板文本字符串。这就是我觉得奇怪的原因。如果复制“网络粘贴”选项卡,则url为:http://...../wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=15
删除了域名该问题涉及太多移动部件。它可以通过两个控制台.log(url)
-内部和外部if
块轻松调试。如果你怀疑出了什么问题,最好缩小问题范围并调试变量,而不是试图用间接的方式(HTTP请求)解决问题。我不能相信我在复制粘贴url代码行时忘记删除let
。非常感谢。@Tasos不客气。我通常使用if..else与let保持一致,let url;如果(…)url=。。。else url=…
。这有点冗长,但将这两种情况视为相等,并防止出现类似情况。我可能是在类似的事故后开始这样做的。说得对。谢谢你的建议。从现在起,我可能会遵循它