$ httpParamSerializerJQLike和encodeURIComponent之间的区别是什么?

时间:2016-03-25 21:31:43

标签: javascript angularjs

有人可以解释它们之间的区别 $httpParamSerializerJQLike,可在Angular和encodeURIComponent中找到?

在使用JSON.Stringify()序列化参数后,是否需要执行$httpParamSerializerJQLike?我的理解是$httpParamSerializerJQLike是Angular的encodeURIComponent版本,并且它在内部执行JSON.Stringify(这部分我不确定)。

1 个答案:

答案 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'被视为一个字符数组。

encodeURIComponent

  

通过将某些字符的每个实例替换为表示字符的UTF-8编码的一个,两个,三个或四个转义序列来编码统一资源标识符(URI)组件。

例如:

encodeURIComponent({a: 'two'}); // "%5Bobject%20Object%5D"
encodeURIComponent('abc'); // "abc"
encodeURIComponent('abc abc abc'); // "abc%20abc%20abc"

您可以看到encodeURIComponent使用适当的转义序列替换特殊字符,并且不会将字符串视为字符序列。