1

一点背景知识:我正在使用 jQuery UI 可排序序列化方法,它产生以下内容:

category[]=Value & One&category[]=ValueTwo&category[]=ValueThree

然后我发出 Ajax 请求以将数据发送 (POST) 到 Web 服务。

我目前正在使用 HttpUtility.ParseQueryString 方法将数据推送到集合中,但是 & 出现问题,因为它导致:“Value”(“& 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: /(.*)/
        });
4

3 回答 3

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()哎呀,有人在转储到字符串之前忘记了键和值部分。

于 2011-03-18T01:11:08.567 回答
1

这是 POSTed 数据的问题,& 应该是 % 编码的(到 %26 中)。空格应编码为“+”:

   category[]=Value+%26+One&category[]=ValueTwo&category[]=ValueThree
于 2011-03-18T00:47:21.083 回答
0

在发布您的数据之前。您应该使用任何本机 JS 转义功能来转义各个值。

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

于 2011-03-18T00:47:57.220 回答