有人可以解释它们之间的区别
$httpParamSerializerJQLike
,可在Angular和encodeURIComponent
中找到?
在使用JSON.Stringify()
序列化参数后,是否需要执行$httpParamSerializerJQLike
?我的理解是$httpParamSerializerJQLike
是Angular的encodeURIComponent
版本,并且它在内部执行JSON.Stringify
(这部分我不确定)。
答案 0 :(得分:4)
$httpParamSerializerJQLike
不是Angular的encodeURIComponent
版本。
来自$httpParamSerializerJQLike的文档:
替代$ http params序列化程序,它遵循jQuery的param()方法逻辑。
$httpParamSerializerJQLike
用于创建适合在URL查询字符串或Ajax请求中使用的Array或plain对象的序列化表示。它用于定义URI的查询参数。它的用途仅限于数组和普通对象。
例如:
$httpParamSerializerJQLike({a: 'two'}); // "a=two"
$httpParamSerializerJQLike('abc'); // "0=a&1=b&2=c"
您会注意到字符串'abc'
被视为一个字符数组。
通过将某些字符的每个实例替换为表示字符的UTF-8编码的一个,两个,三个或四个转义序列来编码统一资源标识符(URI)组件。
例如:
encodeURIComponent({a: 'two'}); // "%5Bobject%20Object%5D"
encodeURIComponent('abc'); // "abc"
encodeURIComponent('abc abc abc'); // "abc%20abc%20abc"
您可以看到encodeURIComponent
使用适当的转义序列替换特殊字符,并且不会将字符串视为字符序列。