我不明白$ httpParamSerializerJQLike和$ httpParamSerializer之间的主要区别是什么时候我们可以使用其中一个.. 任何人帮助我..?
答案 0 :(得分:2)
老问题,但今天也在寻找它,并在其他地方找到答案:
link:
一般来说,似乎$ httpParamSerializer使用较少的"传统"对于复杂的数据结构,url编码格式比$ httpParamSerializerJQLike。
例如(忽略括号的百分比编码):
使用{sites:['google', 'Facebook']}
等数据对象的数组属性:
sites=google&sites=facebook
sites[]=google&sites[]=facebook
使用{address: {city: 'LA', country: 'USA'}}
等数据对象的对象属性:
address={"city": "LA", country: "USA"}
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的行为。