javascript - 通过邮件传递对象

时间:2010-11-23 12:08:09

标签: javascript jquery post object

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

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

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

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

  

[object Object]

如何通过邮寄发送对象?

基本上我要做的是

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

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

是隐藏表格的一部分。

按下按钮时我有

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

<小时/> 请不要使用ajax,因为我必须这样做才能下载动态创建的文件。

2 个答案:

答案 0 :(得分:23)

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

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

答案 1 :(得分:11)

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

看起来像这样:

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

...而你的服务器端会看到表格中的字符串

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