Как передать JSON через элемент формы - PullRequest
2 голосов
/ 16 марта 2010

У меня есть этот swf (flash) файл, который предоставляет json, который нужно отправить на сервер.

Я написал очень простой jQuery:

function submitForm(swf_json) {
$('#swfjson').val(swf_json); #swfjson is an input of type hidden
$('#titleForm').submit();
}

и swf вызовет submitForm выше, и я получу запрос. POST в django как обычно.

Но, Джанго интерпретирует swf_json как строку "Object object"

    >>>type(request.POST['swfjson'])
    <type 'unicode'>

Конечно, я могу передать json как строку в функцию view. Не кажется мне хорошим. Есть ли другой способ передачи объекта json в представление django?

Ответы [ 4 ]

3 голосов
/ 17 марта 2010

Сначала вы должны «сериализовать» ваш объект JavaScript в строку JSON , используя такую ​​библиотеку, как https://github.com/douglascrockford/JSON-js (в JQuery не встроена соответствующая функция).

1 голос
/ 16 марта 2010

Конечно, Джанго видит строку «Объектный объект». Это именно то, что jQuery пишет в поле ввода. И что впоследствии будет представлено. ( Демо )

Параметр swf_json является объектом для JavaScript. Если вы хотите передать его как строку, я предлагаю немного изменить swf, чтобы он передавал строку в вашу функцию вместо объекта json. Предполагая, что вы создаете свой JSON с помощью конкатенации строк, просто добавьте дополнительные кавычки в конце и в начале перед вызовом submitForm

Вместо

{
  "firstName": "John",
  "lastName": "Smith"
} //json object

попробуйте это

'{
  "firstName": "John",
  "lastName": "Smith"
}' //string

Если я правильно помню https://github.com/douglascrockford/JSON-js/blob/master/json2.js разрешает преобразование между json и строками

1 голос
/ 16 марта 2010

Попробуйте функцию jQuery post

$.post("your/url/", 
       {"id":id}, 
       function(data){},
       "json");
0 голосов
/ 16 марта 2010

Как альтернатива ответу джиттера, почему бы просто не проанализировать объект json, используя библиотеку json Python Таким образом, вам не нужно анализировать строку вручную. В качестве дополнительного бонуса он более перспективен на случай, если ваш клиент решит передать более одного значения через объект json.

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