我有一个看起来像这样的对象
var obj = { p1:是的, p2:是的, p3:假 }
我希望尝试将此对象作为帖子请求的一部分传递。
然而另一端(在php中)我得到的是
[object Object]
如何通过邮寄发送对象?
基本上我要做的是
我有一个隐藏的输入,就像这样创建
<input id="obj" type="hidden" name="obj[]">
是隐藏表格的一部分。
按下按钮时我有
$(#obj).val(obj);
$('form').submit();
<小时/> 请不要使用ajax,因为我必须这样做才能下载动态创建的文件。
答案 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 }