Pesquisa de site

Passando um array JavaScript para um formulário/$_POST sem ajax


Estou trabalhando em um elemento de upload de formulário que pode ser usado nos formulários do Zend Framework. Estou tentando fazer com que o programador possa usá-lo em qualquer projeto sem ter que configurar manualmente nenhuma configuração.

Os arquivos são enviados por um uploader AJAX que retorna dados JSON como:

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

Como o próprio carregador é um elemento de formulário, estou tentando colocar esses dados no formulário para que, no envio, os valores possam ser recuperados do $_POST. Eu estava adicionando campos ocultos com JavaScript chamados uploader-data[] (ao enviar o formulário), mas isso só me permite passar 1 variável por vez para o campo oculto.

Então, eu suponho que minha pergunta seja: "Como posso passar o array/objeto inteiro para o $_POST/formulário?". Mesmo que eu esteja usando AJAX para o próprio uploader, eu não quero usá-lo para enviar o formulário. Eu quero um envio de formulário normal contendo todos os dados do objeto/array JSON. Os arquivos já estão carregados, mas eu posso querer usar os dados do JSON no meu banco de dados ou em algum outro lugar.

É possível fazer algo assim?

Obrigado(a) desde já.

Resposta #1

Coloque o valor do seu javascript em um campo de entrada usando 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);

Isso transformará seu array no seguinte valor de texto:

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

O Zend pode analisar o valor JSON em um array PHP.