Разбор POST-данных с помощью амперсанда - PullRequest
1 голос
/ 18 марта 2011

Немного предыстории: я использую метод сортируемой сериализации jQuery UI, который производит что-то вроде следующего:

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

Затем я делаю Ajax-запрос на отправку данных (POST) в веб-службу.

В настоящее время я использую метод HttpUtility.ParseQueryString для помещения данных в коллекцию, но возникает проблема с &, так как это приводит к: «Значение» («& One» обрезается).

Кажется, что это должно быть невероятно легко исправить, но по какой-то причине я рисую пробел. Как лучше всего сохранить значение как «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: /(.*)/
        });

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Пользовательский интерфейс jQuery не работает. Строка 411 файла jquery.ui.sortable.js:

if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));

Ой, кто-то забыл encodeURIComponent() часть ключа и значения перед сбросом в строку.

1 голос
/ 18 марта 2011

Это проблема данных POST, код & должен быть% -кодирован (в% 26). И пробел должен быть закодирован как "+":

   category[]=Value+%26+One&category[]=ValueTwo&category[]=ValueThree
0 голосов
/ 18 марта 2011

До публикации ваших данных. Вы должны экранировать отдельные значения, используя любую из собственных функций экранирования JS.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...