Angularjs 将保留字符作为URL参数值发送
我必须按原样发送参数值Angularjs 将保留字符作为URL参数值发送,angularjs,http,url,get,escaping,Angularjs,Http,Url,Get,Escaping,我必须按原样发送参数值'AbCd/EfgH'。但是从'/'到%2F的角度转义。我无法控制URL 解决这个问题的最佳方法是什么 我不想强迫angular停止对所有其他URL进行编码 $http.get(URL, { params: { emv_ref: 'AbCd/EfgH', email: email } }); 角度URL对所有参数进行编码,您不能仅从该过程中排除一个参数。您只需要手动编写带有必要参数的URL。使用便捷服务序列化部分参数
'AbCd/EfgH'
。但是从'/'
到%2F
的角度转义。我无法控制URL
解决这个问题的最佳方法是什么
我不想强迫angular停止对所有其他URL进行编码
$http.get(URL, {
params: {
emv_ref: 'AbCd/EfgH',
email: email
}
});
角度URL对所有参数进行编码,您不能仅从该过程中排除一个参数。您只需要手动编写带有必要参数的URL。使用便捷服务序列化部分参数,并将非编码的参数附加到参数字符串中:
var params = $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
$http.get(URL + '?' + params);
或者更干净的方法是使用自定义函数:
$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;
}
});
你试过encodeURIComponent(“AbCd/EfgH”)吗?@alexandre encodeURIComponent会正确编码吗?(“/”到%2F)。angular将再次对其进行编码。我不想给它编码。该值必须按原样附加到URL中。使用urlencode时发送的URL是什么?或者,您可以使用“AbCd\/EfgH”url,通常类似于http://?email=&ref=AbCd%2efgh,当我使用encodeURIComponent时,它类似于http://?email=&ref=AbCd%252EfgH。我希望它像http://?email=&ref=AbCd/FEfgHI一样在我的配置中定义了URL,这些emv_ref非常长。所以你认为这是唯一的方法?自定义序列化程序看起来不错。我会试试看。谢谢