2017-09-03 72 views
3

HTTP請求我有一個奇怪的問題,在角度和離子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上的開發工具中,在網絡標籤中,我可以看到不帶搜索參數的被叫網址。只需_labelspaging。但是,我添加了console.log如果工作,它打印正確的網址,如果我在郵遞員上使用它,我得到我想要的過濾結果。

我嘗試了不同的方法來連接字符串,但我一直都有同樣的問題。

+0

「無搜索參數」。你看到了什麼? –

+0

查詢字符串參數:'_labels = 1&paging [page_size] = 15' – Tasos

+0

這是不可能的,至少'&search ='必須被打印出來,因爲它不依賴於模板文字字符串中的任何變量。 –

回答

1

存在範圍問題。 let是塊範圍。

let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`; 

的範圍屬於if (...) { ... }。這兩個url是不同的變量,並且在if內分配的變量永遠不會被使用(console.log除外)。

應該

url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`; 
+0

我不能相信,當我複製粘貼網址的代碼行時,我忘了刪除'let'。非常感謝。 – Tasos

+0

@Tasos不客氣。我通常使用if..else與let一致,'let url;如果(...)url = ... else url = ...'。這有點冗長,但將兩個條件視爲平等並防止出現這種情況。在類似事故發生後,我可能已經開始這樣做了 – estus

+0

好點。感謝您的建議。我從現在開始可能會遵循它 – Tasos