Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将保留字符作为URL参数值发送_Angularjs_Http_Url_Get_Escaping - Fatal编程技术网

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非常长。所以你认为这是唯一的方法?自定义序列化程序看起来不错。我会试试看。谢谢