javascript - 通过邮件传递对象

Hai*_*ood 12 javascript jquery post object

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

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

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

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

[对象]

如何通过邮寄发送对象?

基本上我想要做的是

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

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

这是隐藏形式的一部分.

按下按钮时我有

$(#obj).val(obj);
$('form').submit();
Run Code Online (Sandbox Code Playgroud)


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

Mat*_*att 24

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

$('#obj').val(jQuery.param(obj));
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 12

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

这看起来像这样:

$('#obj').val(JSON.stringify(obj));
$('form').submit();
Run Code Online (Sandbox Code Playgroud)

...而你的服务器端会在表单中看到一个字符串

{ "p1" : true, "p2" : true, "p3" : false }
Run Code Online (Sandbox Code Playgroud)