2010-03-16 2 views
2

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

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

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

и швейцарские франки будут вызывать SubmitForm выше, и я получаю request.POST в Джанго, как обычно.

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

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

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

ответ

1

Конечно Джанго видит строку "объект Object". Это то, что jQuery записывает в поле ввода. И что впоследствии получает. (Demo)

Параметр 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 и строками

+0

Спасибо, Thats, что я думал. Просто просто передать строку вокруг. Но я получаю json из swf, как я в javascript преобразую его в строку. –

+0

проверить расширенный ответ (в конце) – jitter

+0

Очень хороший ответ. –

1

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

$.post("your/url/", 
     {"id":id}, 
     function(data){}, 
     "json"); 
+0

Я не думаю, что это будет решать потому что он все равно отправит объект json. –

0

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

+0

установка входного значения и представление этой формы проще, чем использование сообщения ajax. Этот способ препятствует моему развитию, поскольку я не могу создать объект json в тесте python. –

3

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

Смежные вопросы