Передача массива javascript в форму / $ _POST без ajax - PullRequest
6 голосов
/ 08 декабря 2011

Я работаю над элементом загрузки формы, который можно использовать в формах Zend Framework. Я пытаюсь сделать так, чтобы программист мог использовать его в любом проекте без необходимости ручной настройки каких-либо настроек.

Файлы загружаются загрузчиком AJAX, который возвращает данные JSON, например:

[
  {
      "name":"image.png",
      "size":42410,
      "type":"image\/png",
      "url":"http:\/\/example.com\/image.png",
      "thumbnail_url":"http:\/\/example.com\/thumbnail\/image.png",
   }
]

Поскольку сам загрузчик является элементом формы, я пытаюсь поместить эти данные в форму, чтобы при отправке значения можно было извлечь из $ _POST. Я добавлял скрытые поля ввода с помощью javascript с именем uploader-data [] (при отправке формы), но это позволяет мне передавать только 1 переменную за раз в скрытое поле.

Итак, я предполагаю, что мой вопрос: «Как я могу передать весь массив / объект в $ _POST / форму?». Хотя я использую AJAX для самого загрузчика, я не хочу использовать его для отправки формы. Я хочу регулярную отправку формы, содержащую все данные из объекта / массива JSON. Сами файлы уже загружены, но я мог бы использовать данные JSON в моей базе данных или в другом месте.

Можно ли сделать что-то подобное?

Заранее спасибо.

1 Ответ

6 голосов
/ 08 декабря 2011

Поместите значение javascript в поле ввода, используя JSON.stringify :

data = [
  {
      "name":"image.png",
      "size":42410,
      "type":"image\/png",
      "url":"http:\/\/example.com\/image.png",
      "thumbnail_url":"http:\/\/example.com\/thumbnail\/image.png",
   }
]
document.getElementById('my_hidden_input').value = JSON.stringify(data);

Это превратит ваш массив в следующее текстовое значение:

[{"name":"image.png","size":42410,"type":"image/png","url":"http://example.com/image.png","thumbnail_url":"http://example.com/thumbnail/image.png"}]

Zend может анализировать значение JSON в массиве php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...