2010-03-16 19 views
2

我有這個swf(flash)文件,它提供了需要發送到服務器的json。如何通過表單元素傳遞json

我寫了一個很簡單的jQuery:

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

和SWF將撥打以上submitForm,我收到request.POST在Django如常。

但是,Django是解釋swf_json作爲字符串"Object object"

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

我當然可以傳遞JSON作爲字符串到視圖的功能。對我來說不太好。任何其他方式將json對象傳遞給django視圖?

回答

1

當然Django的看到字符串 「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

謝謝,這就是我的想法。很簡單,只是傳遞字符串。但是我從swf收到一個json,我如何在JavaScript中將它轉換爲一個字符串。 – 2010-03-16 10:45:17

+0

查看擴展的答案(最後) – jitter 2010-03-16 11:41:36

+0

非常好的答案。 – 2010-03-16 16:50:05

1

嘗試jQuery函數post

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

我不認爲這會解決問題,因爲它仍然會發送一個json對象。 – 2010-03-16 16:48:31

0

作爲jitter的答案的替代方案,爲什麼不使用Python的json library簡單地解析json對象。這樣你不需要手動解析字符串。作爲一個額外的好處,如果您的客戶決定通過json對象傳遞多個值,那麼它更具有未來發展前景。

+0

設置一個輸入值並提交該表單比使用ajax文章更簡單。這種方式阻礙了我的發展,因爲我不能在python測試中創建json對象。 – 2010-03-16 19:43:07