javascript – 通过邮件传递对象

我有一个看起来像这样的对象

var obj = {p1:true,p2:true,p3:false}

我希望尝试将此对象作为发布请求的一部分传递。

但另一方面(在PHP中)我得到的只是

[对象]

如何通过邮寄发送对象?

基本上我想要做的是

我有一个隐藏的输入,并像这样创建

这是隐藏forms的一部分。

按下按钮时我有

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

请不要使用ajax的建议,因为我必须这样做,因为它是下载动态创建的文件。

在提交之前,您需要将对象序列化/转换为字符串。 你可以使用jQuery.param()

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

您可以考虑使用JSON表示法将对象发送到服务器。 如果在页面中包含JSON解析器/渲染器 (它现在内置在所有现代浏览器上,并且在标准模式下也是IE8) ,则可以将对象转换为保留其完整对象图形的字符串。 大多数服务器端语言现在都可以使用JSON解析(例如,在PHP中它是json_decode )。 您可以在发送表单之前将该字符串放在隐藏的表单字段中。

这看起来像这样:

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

…并且您的服务器端将在表单中看到一个字符串

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