使用&符号解析POST数据
一点背景:我正在使用jQuery UI可排序序列化方法,它产生以下内容:
category[]=Value & One&category[]=ValueTwo&category[]=ValueThree
然后,我发出一个Ajax请求,将数据(POST)发送到Web服务。
我目前正在使用HttpUtility.ParseQueryString方法将数据推送到集合中,但是问题出现了&因为它导致:“值”(“&One”被切断)。
这似乎应该非常容易修复,但由于某种原因,我正在画一个空白。 什么是保持价值“价值与一”的最佳方式?
编辑:添加代码示例:
Dim data As String = "category[]=Value & One&category[]=ValueTwo&category[]=ValueThree" Dim httpPOSTData As System.Collections.Specialized.NameValueCollection httpPOSTData = HttpUtility.ParseQueryString(data) 'Result: "Value ,ValueTwo,ValueThree" 'Desired Result: "Value & One,ValueTwo,ValueThree"
使用Javascript:
serializedSortOrder = $('#Categories').sortable('serialize',{ attribute:'data-category', key:'category[]', expression: /(.*)/ });
jQuery UI坏了。 jquery.ui.sortable.js的第411行:
if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
哎呀,有人忘了在转换成字符串之前先对encodeURIComponent()
键和值部分进行编码。
这是POSTed数据的问题,&应该是%-encoded(进入%26)。 空格应编码为“+”:
category[]=Value+%26+One&category[]=ValueTwo&category[]=ValueThree
在发布数据之前。 您应该使用任何本机JS转义function来转义各个值。