javascript-通过post传递对象

javascript-通过post传递对象,javascript,jquery,post,object,Javascript,Jquery,Post,Object,我有一个像这样的物体 var obj={ p1:是的, p2:是的, p3:错误 } 我希望尝试将此对象作为post请求的一部分传递 然而,在另一端(在php中),我得到的只是 [对象] 如何通过post发送对象 基本上我想做的是 我有一个隐藏的输入,它是这样创建的 这是隐藏形式的一部分 当按下按钮时,我有 $(#obj).val(obj); $('form').submit(); 请不要建议使用Ajax,因为我必须这样做,因为它是下载一个动态创建的文件。 < p>您可以考虑使用符号来发送

我有一个像这样的物体

var obj={ p1:是的, p2:是的, p3:错误 }

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

然而,在另一端(在php中),我得到的只是

[对象]

如何通过post发送对象

基本上我想做的是

我有一个隐藏的输入,它是这样创建的

这是隐藏形式的一部分

当按下按钮时,我有

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

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

< p>您可以考虑使用符号来发送对象到服务器。如果在页面中包含一个(现在所有现代浏览器都内置了它,标准模式下也内置了IE8),则可以将对象转换为字符串,保留其完整的对象图。现在,大多数服务器端语言都可以使用JSON解析(例如,在PHP中是
JSON\u decode
)。在发送表单之前,可以将该字符串放入隐藏的表单字段中

看起来是这样的:

$('#obj').val(JSON.stringify(obj));
$('form').submit();
…您的服务器端将在表单中看到一个字符串

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

在提交对象之前,需要将其序列化/转换为字符串。你可以用这个

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

请通读整个问题。表单是需要的,因为它正在下载一个动态生成的文件,所以不能从ajax数据下载文件。我也不能将创建的文件存储在任何地方,因此,通过ajax调用生成文件并返回url也不起作用。@Hailwood:真不敢相信我错过了。修正了。@T.J.干杯,你的新答案会有用的。不过我用的是@Matt的答案:)(顺便说一句,你得到了我的支持)@Hailwood:很高兴Matt的解决方案对你有用,这都是关于有选择的问题。:-)确切地说,实际上我更喜欢这个选项,但我已经包括jquery,除非它有内置的JSON解析器,否则我真的不想包括另一个库。现在大多数浏览器已经有了JSON解析器,但是。。。IE6…A+第一个阅读整个问题的人,你的答案也很完美:)将接受asapeven递归的作品
{A:{b:'c',d:{e:'f',g:'h},i:'j'}
=
A[b]=c&A[d][e]=f&A[d][g]=h&i=j