有人可以解释一下$httpParamSerializerJQLike
(可在Angular中使用)和encodeURIComponent
?
使用JSON.Stringify()
序列化参数后,是否需要执行$httpParamSerializerJQLike
?我的理解是$httpParamSerializerJQLike
是Angular的encodeURIComponent
版本,并且它在内部执行JSON.Stringify
(我不确定这部分)。
最佳答案
$httpParamSerializerJQLike
不是Angular的encodeURIComponent
版本。
从$httpParamSerializerJQLike的文档中:
$httpParamSerializerJQLike
用于创建适用于URL查询字符串或Ajax请求的Array或纯对象的序列化表示形式。它用于定义URI的查询参数。它的使用仅限于数组和普通对象。
例如:
$httpParamSerializerJQLike({a: 'two'}); // "a=two"
$httpParamSerializerJQLike('abc'); // "0=a&1=b&2=c"
您会注意到,字符串
'abc'
被视为字符数组。encodeURIComponent:
例如:
encodeURIComponent({a: 'two'}); // "%5Bobject%20Object%5D"
encodeURIComponent('abc'); // "abc"
encodeURIComponent('abc abc abc'); // "abc%20abc%20abc"
您会看到
encodeURIComponent
用适当的转义序列替换了特殊字符,并且不会像对待字符序列那样对待字符串。