2016-09-03 29 views
1

我想在一個AngularJs $ http.get參數部分包含一個等號。下面是相關代碼:

let eventsRequest = this.$http.get(EVENTS_ENDPOINT, { 
     params: { 
      type: type, 
      filter: 'eventId=' + eventId 
     } 
    }); 

從本質上講,我想這是序列化到:

?type=my_type&filter=eventId=this_event_id 

然而,當我運行下面的代碼「=」號是%3D取代。我嘗試使用「/」進行轉義,但沒有奏效。我也嘗試通過角度文件查找,但找不到任何東西。任何想法如何使這項工作?

+0

這是正常現象。你的服務器(api)應該能夠解碼uri組件。當你在參數params中使用'params' angular內部使用'encodeURIComponent'時,你也可以嘗試在這種情況下不使用'params',而是手動構建查詢,例如'this。$ http.get(EVENTS_ENDPOINT + ['?type =',type,'&filter =','eventId =',eventId] .join(「」));'然而這取決於你的服務器如何讀取它。 – PSL

回答

0

這實際上是傳遞保留字符(=)作爲查詢參數值時的預期行爲。您的瀏覽器URL encodes這些字符,以便查詢參數可以在接收端(您的服務器)解析。

您必須使用不同的機制來傳遞特定的過濾器或反序列化服務器上​​的「等號」符號。

另一種可能的方式來定義URL方案:

?type=my_type&filterEventId=this_event_id&filterLocationId=this_location_id 
+0

是的,我知道這是預期的行爲,我只是希望在這種情況下可以解決這個問題。謝謝! –