我必须按原样发送参数值'AbCd/EfgH'
。但角度从'/'
转移到%2F
。我无法控制URL
。
解决此问题的最佳方法是什么?
我不想强制角度停止对所有其他网址进行编码。
$http.get(URL, {
params: {
emv_ref: 'AbCd/EfgH',
email: email
}
});
答案 0 :(得分:1)
Angular URL会对所有参数进行编码,您不能只从此进程中排除一个参数。你只需要用必要的参数手动编写URL。使用方便的$httpParamSerializer服务来序列化部分参数,并将非编码附加到params字符串:
var params = $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
$http.get(URL + '?' + params);
或者更清洁的方法是使用自定义paramSerializer功能:
$http.get(URL, {
paramSerializer: function(params) {
return $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
}
});
..或者像这样:
$http.get(URL, {
params: {
email: email,
emv_ref: 'AbCd/EfgH'
},
paramSerializer: function(params) {
var ref = '&emv_ref=' + params.emv_ref;
delete params.emv_ref;
return $httpParamSerializer(params) + ref;
}
});