Почему jQuery.getJSON () сглаживает мой словарь JavaScript? - PullRequest
1 голос
/ 15 февраля 2012

У меня большая проблема с передачей словаря javascript через метод jQuery.getJSON () на мой сервер. У меня есть этот словарь объявлен в jscript:

data = {'a': 1, b:{'c':2, 'd':3}};

Когда я звоню:

jQuery.getJSON("myurl", data, callback)

сервер получает словарь со следующими значениями:

{'a':1, 'b[c]':2, 'b[d]':3}.

Обратите внимание, что под-словарь был сведен, комбинируя клавишу «b» с подразделами «c» и «d». Это невероятно неприятно для вложенных данных.

Признаюсь, я не уверен, что это проблема с сериализацией javascript и JSON или с Python и Pyramid, веб-фреймворком, который получает данные. Я пытался выполнить строковое преобразование перед отправкой данных, а также использовать библиотеку json в Python для десериализации, но я получаю только ошибки.

Любая помощь, пожалуйста?

1 Ответ

3 голосов
/ 15 февраля 2012

Способ отправки данных верен.

Поле данных предназначено для передачи данных по HTTP.Если вы отправите это через HTTP get, вы увидите параметры в строке запроса.

myurl?a=1&b%5Bc%5D=2&b%5Bd%5D=3

Неэкранированный URL:

myurl?a=1&b[c]=2&b[d]=3

Если вы хотите отправить JSON на сервер,вам нужно будет его зачеркнуть.с JSON.stringify () Вам потребуется включить библиотеку JSON для поддержки до IE8.

Вам необходимо присвоить строковые данные переменной.

jQuery.getJSON("myurl",{data: JSON.stringify(data)}, callback);

Это будет передано на ваш сервер в переменной с именем data.

...