代码之家  ›  专栏  ›  技术社区  ›  Hailwood

javascript-通过post传递对象

  •  11
  • Hailwood  · 技术社区  · 14 年前

    我有个像这样的东西

    变量obj={ p1:没错, p2:没错, p3:错误 }

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

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

    [对象对象]

    如何通过邮寄发送对象?

    基本上我想做的是

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

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

    这是隐藏形式的一部分。

    当按下按钮时

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


    请不要建议使用ajax,因为我必须这样做,因为它是下载一个动态创建的文件。
    2 回复  |  直到 14 年前
        1
  •  24
  •   Matt user129975    14 年前

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

    $('#obj').val(jQuery.param(obj));
    
        2
  •  12
  •   T.J. Crowder    10 年前

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

    看起来是这样的:

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

    …服务器端将看到表单中的字符串

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