Передайте объект JavaScript в поле ввода HIDDEN и перехватите его как массив / объект на стороне сервера. - PullRequest
2 голосов
/ 02 августа 2011

На моей странице есть поле, например:

<input type="hidden" name="myField" id="myField" />

и у меня есть кусок кода, который выглядит следующим образом:

$(document).ready(function() {
    var myObject = {
        item1: 'item1 value',
        item2: 'item2 value',
        item3: 'item3 value',
        item4: 'item4 value',
    };

    $('#myField').val(myObject);
});

И когда я отправляю эту форму, я перехватываю и выводим переменную $_POST с функциями print_r / var_dump и получаю следующий вывод для этого поля формы (myField).

[myField] => [object Object]

Как я могу выбросить массив / объект JavaScript в поле формы и сделать так, чтобы он был оценен / преобразован в тип данных propper на стороне сервера, чтобы я мог получить его следующим образом в своем PHP-скрипте:

[myField] => Array(
    item1 => item1 value
    item2 => item2 value
    item3 => item3 value
    item4 => item4 value
)

Как этого добиться, без жесткого кодирования?

1 Ответ

9 голосов
/ 02 августа 2011

Кодировать объект как JSON [Википедия] :

$('#myField').val(JSON.stringify(myObject));

и декодировать его на стороне сервера с помощью json_decode [документы] .

JSON [документы] объект доступен в последних браузерах и также может быть включен как library .

...