一些背景知识:我正在使用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: /(.*)/
});
答案 0 :(得分:2)
jQuery UI被破坏了。 jquery.ui.sortable.js的第411行:
if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
哎呀,在转入字符串之前,有人忘了encodeURIComponent()
键和值部分。
答案 1 :(得分:1)
这是POSTed数据的问题,&应该是%编码(进入%26)。空格应编码为“+”:
category[]=Value+%26+One&category[]=ValueTwo&category[]=ValueThree
答案 2 :(得分:0)
在发布数据之前。您应该使用任何本机JS转义功能来转义各个值。