Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 特定参数不包括在服务器上的HTTP请求中_Angular_Typescript_Ionic2 - Fatal编程技术网

Angular 特定参数不包括在服务器上的HTTP请求中

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

我在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 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=…
。这有点冗长,但将这两种情况视为相等,并防止出现类似情况。我可能是在类似的事故后开始这样做的。说得对。谢谢你的建议。从现在起,我可能会遵循它