使用&符号解析POST数据

时间:2011-03-18 00:40:40

标签: jquery ajax serialization ampersand

一些背景知识:我正在使用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: /(.*)/
        });

3 个答案:

答案 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转义功能来转义各个值。

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