Как jQuery параметризует массив в $ .ajax ()? - PullRequest
0 голосов
/ 30 ноября 2011

Я использую плагин для поста, не являющегося Ajax.Тем не менее, мой массив просто передается с «[Object = object]», поэтому мне явно необходимо выполнить некоторую параметризацию для этого объекта массива.Это не так просто, как поместить его в хеш, например:

{ 'myarray': myarray }

Когда вы отправляете вышеупомянутое в $ .ajax (), оно меняет его на что-то вроде:

{ 'myarray': {'1': arrayfirsthash, '2': arraysecondhash, ...., '3': arraynhash } }

Тамдолжна быть какая-то функция jQuery, которая делает это преобразование.Что это, и могу ли я назвать это публично?

Спасибо за любую помощь, которую вы можете предложить.

ОБНОВЛЕНИЕ: Чтобы прояснить мой вопрос, я на самом деле ищу, как я могу разместить этозначение в элементе формы, чтобы сервер воспринимал его как хешДаже если я помещу JSON-кодированный хэш в элемент формы, он все равно выходит сервером как «Объект».Мне нужно как-то сериализовать этот хэш JSON, чтобы он мог быть РАЗМЕЩЕН на моем сервере.

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Формат параметров будет зависеть от того, выполняете ли вы операцию GET или POST.

Если вы выполняете POST, то параметры отправляются в теле сообщения.

Если служба ожидает информацию в JSON, вам придется явно сериализовать данные перед их передачей в ваш .ajaxcall (как параметр 'data').

Сериализовать его можно следующим образом:

    contentSerialized = JSON.stringify(content);

Функция JSON.stringify поддерживается только более поздними браузерами.

Я полагаю, что есть несколько плагинов javscript, которые вы можете загрузить, которые «заполняют» эту функцию - это разрешено для браузеров, которые ее не поддерживают.См. этот вопрос .

Если вы выполняете веб-GET, то параметры кодируются в строку запроса.

Вызов .ajax выполнит эту кодировку автоматически, но если вы хотели сделать это явно, jQuery предоставляет .param функция.

2 голосов
/ 30 ноября 2011

Полагаю, вы хотите создать строку параметров из объекта.Для этого вы можете использовать $.param(): http://api.jquery.com/jquery.param/

Вот jsfiddle использования $.param() для объекта: http://jsfiddle.net/jasper/eVLVJ/

var myObject = {
    a: { one: 1, two: 2, three: 3 },
    b: [1, 2, 3] };
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));
alert(recursiveDecoded);

Примечание: приведенный выше кодпример на странице документации для $.param().

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