如何通过表单元素传递json

时间:2010-03-16 09:22:07

标签: jquery django json flash

我有这个swf(flash)文件,它提供了需要发送到服务器的json。

我写了一个非常简单的jQuery:

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

并且swf将调用上面的submitForm,我像往常一样在django中收到request.POST。

但是,django正在将swf_json解释为字符串"Object object"

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

当然我可以将json作为字符串传递给view函数。对我来说似乎不太好。将json对象传递给django视图的任何其他方式?

4 个答案:

答案 0 :(得分:3)

您必须首先使用诸如https://github.com/douglascrockford/JSON-js之类的库将 JavaScript对象“序列化”为 JSON字符串(JQuery中没有适当的功能。 )

答案 1 :(得分:1)

尝试jQuery函数post

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

答案 2 :(得分:1)

当然django会看到字符串“Object 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和字符串之间进行转换

答案 3 :(得分:0)

作为jitter答案的替代方法,为什么不简单地使用Python的json library解析json对象。这样您就不需要手动解析字符串。作为一个额外的奖励,如果您的客户决定通过json对象传递多个值,它将更具未来性。