2010-11-23 63 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