Javascript - передать объект через сообщение

У меня есть объект, который выглядит как

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

Я пытаюсь передать этот объект как часть запроса на отправку.

однако на другом конце (в php) все, что я получаю, это

[объект объекта]

Как отправить объект по почте?

в основном то, что я пытаюсь сделать, это

У меня есть вход, который скрыт и создается таким образом

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

который является частью скрытой формы.

когда нажата кнопка I

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


Пожалуйста, не предлагайте использовать ajax, поскольку я должен сделать это таким образом, чтобы загрузить динамически созданный файл.

Ответ 1

Перед отправкой необходимо выполнить сериализацию/преобразование объекта в строку. Вы можете использовать jQuery.param() для этого.

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

Ответ 2

Вы можете рассмотреть возможность использования JSON для отправки объекта на сервер. Если вы включите в свою страницу JSON parser/renderer, (теперь он встроен во все современные браузеры, а также IE8 в стандартном режиме) вы можете преобразовать объект в строку, сохраняющую полный граф объекта. Большинство серверных языков теперь имеют JSON-анализ для них (например, в PHP it json_decode). Вы можете поместить эту строку в поле скрытой формы перед отправкой формы.

Это будет выглядеть так:

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

... и ваша сторона сервера увидит строку в форме

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