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.
