2016-09-03 32 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

是的,我知道这是预期的行为,我只是希望在这种情况下可以解决这个问题。谢谢! –