$ httpParamSerializerJQLike和$ httpParamSerializer之间的区别

时间:2016-08-08 12:06:41

标签: angularjs

我不明白$ httpParamSerializerJQLike和$ httpParamSerializer之间的主要区别是什么时候我们可以使用其中一个.. 任何人帮助我..?

2 个答案:

答案 0 :(得分:2)

老问题,但今天也在寻找它,并在其他地方找到答案:

link

一般来说,似乎$ httpParamSerializer使用较少的"传统"对于复杂的数据结构,url编码格式比$ httpParamSerializerJQLike。

例如(忽略括号的百分比编码):

使用{sites:['google', 'Facebook']}等数据对象的数组属性:

  • $ httpParamSerializer 会返回sites=google&sites=facebook
  • $ httpParamSerializerJQLike 会返回sites[]=google&sites[]=facebook

使用{address: {city: 'LA', country: 'USA'}}等数据对象的对象属性:

  • $ httpParamSerializer 会返回address={"city": "LA", country: "USA"}
  • $ httpParamSerializerJQLike 会返回address[city]=LA&address[country]=USA

答案 1 :(得分:0)

请参见Olafvv's answer,结果内容如何不同。但是有两点要补充:

首先,$httpParamSerializerJQLike试图模仿jQuery的用于从对象/数组生成请求数据的算法。

第二,$httpParamSerializerJQLike(因此还有jQuery)将从PHP本身可解析的对象/数组中生成请求数据。即请求数据将再次在PHP的全局$_GET / $_POST变量中作为关联数组可用。如果您使用$httpParamSerializer生成sites=google&sites=facebook之类的字符串并将其传递给PHP后端,则PHP不会将sites识别为一个数组,而是一个单独的参数。第二个值facebook将覆盖第一个值google。因此,您必须自己解析请求数据。

但是,it seems the [] syntax was introduced by PHP without any standard or specification。我想,由于jQuery首次发布时PHP的普及,jQuery对AJAX请求数据应用了这种语法。后来,由于jQuery的流行,后来的AngularJS模仿了jQuery的行为。