2010-11-03 2 views
0

Я пытаюсь отправить словарь из JQuery в Django с помощью getJSON вызова:Словарь Object confusion от jQuery до Django!

jQuery.getJSON(URL,JSONData,function(returnData){}); 

Объект JSONData отформатирован следующим образом:

JSONData = { 
    year:2010101, 
    name:"bob", 

    data:{ 
      search:[jim,gordon], 
      register:[jim], 
      research:[dave], 
      } 
} 

Это соединить программно, но выглядит хорошо.

После передачи в Django объекты «год» и «имя», как и ожидалось. Однако объект данных содержит следующие ключи/значения: «поиск [0]»: «jim», «поиск [1]»: «gordon», «register [0]»: «jim», «research [0]» : «dave», а не ожидаемый «поиск»: (массив данных), «register»: (массив данных), «исследование»: (массив данных).

Аналогичные вещи случаются, если я использую объекты вместо массивов.

Это проблема с интерпретацией Django объекта?

Любая идея, как я могу исправить это ... чисто?

EDIT:

Я теперь упрощена данные, чтобы облегчить тестирование:

JSONData = { 
    year:2010101, 
    name:"bob", 
    search:[jim,gordon], 
    register:[jim], 
    research:[dave], 

} 
+0

Можете ли вы также опубликовать, как вы обрабатываете данные в своем представлении? –

+0

на этом этапе я буквально возвращаю request.GET.keys() – danspants

+0

, пока я пропустил поражение, вместо списка я использую строку и разбиваю ее на конец django. – danspants

ответ

3

request.GET не является экземпляром нормального питона dict, но из django class QueryDict, что может иметь дело с несколькими значениями для одного ключа. Если вам нужно несколько значений для ключа, возвращаемого в виде списка, вы должны использовать getList!

EDIT: Также ознакомьтесь с этим jQuery parameter settings!

+0

Нет, проблема по-прежнему заключается в том, что данные были разбиты неправильно, а имена ключей искалечены. например request.GET.getlist («Поиск») должен дать мне список, связанный с ним, вместо этого он ничего не возвращает. request.GET.getlist («Поиск [0]») дает мне одно значение, как указано выше. – danspants

+0

Aha! пришлось установить традиционный = True в настройках параметров. Хорошая работа! – danspants