2010-11-23 48 views
10

傳遞對象我有一個看起來像這樣的JavaScript - 通過郵寄

VAR對象OBJ = { P1:真的, P2:真的, P3:假 }

我期待嘗試並將此對象作爲發佈請求的一部分傳遞。

然而,在另一端(PHP)我得到的是

[目標對象]

如何通過郵寄的對象?

基本上就是我想要做的是

我有一個輸入是隱藏的,是像這樣

<input id="obj" type="hidden" name="obj[]">

這是一個隱藏的表單中創建的。當按鈕被按下

$(#obj).val(obj); 
$('form').submit(); 


請不建議使用AJAX,因爲我必須這樣做,因爲它是下載一個動態創建的文件。

回答

22

你需要序列化/對象轉換爲字符串在提交之前。您可以使用jQuery.param()

$('#obj').val(jQuery.param(obj)); 
11

您可能會考慮使用JSON表示法將對象發送到服務器。 如果在頁面中包含JSON parser/renderer(它現在內置於所有現代瀏覽器中,並且還包含標準模式下的IE8)您可以將該對象轉換爲保存其完整對象圖的字符串。大多數服務器端語言現在都有JSON解析功能(例如,在PHP中,它的格式爲json_decode)。您可以在發送表單之前將該字符串放入隱藏的表單字段中。

這將是這樣的:

$('#obj').val(JSON.stringify(obj)); 
$('form').submit(); 

...和你的服務器端會看到一個字符串形式

{ "p1" : true, "p2" : true, "p3" : false } 
+0

請閱讀整個問題。下載動態生成的文件時需要表單,您不能從ajax數據下載文件。 我無法存儲在任何地方創建的文件,通過ajax調用生成文件並返回一個url也不起作用。 – Hailwood 2010-11-23 12:12:42

+0

@Hailwood:不敢相信我錯過了那個。固定。 – 2010-11-23 12:15:16