使用&符号解析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来转义各个值。

http://xkr.us/articles/javascript/encode-compare/