Odovzdanie JavaScript poľa do formulára/$_POST bez Ajaxu
Pracujem na prvku nahrávania formulára, ktorý sa dá použiť vo formulároch Zend Frameworku. Snažím sa urobiť to tak, aby ho programátor mohol používať v akomkoľvek projekte bez toho, aby musel manuálne nastavovať akékoľvek nastavenia.
Súbory sú nahrávané pomocou AJAX nahrávača, ktorý vracia údaje v JSON formáte ako:
[
{
"name":"image.png",
"size":42410,
"type":"image\/png",
"url":"http:\/\/example.com\/image.png",
"thumbnail_url":"http:\/\/example.com\/thumbnail\/image.png",
}
]
Keďže samotný nahrávač je súčasťou formulára, snažím sa tieto údaje vložiť do formulára, aby sa pri odoslaní dali hodnoty získať z $_POST. Pridával som skryté vstupné polia pomocou JavaScriptu s názvom uploader-data[] (pri odosielaní formulára), ale to mi umožňuje odoslať iba jednu premennú naraz do skrytého poľa.
Takže asi moja otázka je: „Ako môžem odovzdať celé pole/objekt do $_POST/formulára?“. Aj keď používam AJAX pre samotný nahrávač, nechcem ho používať na odoslanie formulára. Chcem bežné odoslanie formulára obsahujúce všetky dáta z JSON objektu/pola. Samotné súbory sú už nahrané, ale môžem chcieť použiť JSON dáta vo svojej databáze alebo niekde inde.
Je možné urobiť niečo takéto?
Vopred ďakujem.
Odpoveď č. 1
Vložte svoju hodnotu javascriptu do vstupného poľa pomocou 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);
Týmto sa váš zoznam prevedie na nasledujúcu textovú hodnotu:
[{"name":"image.png","size":42410,"type":"image/png","url":"http://example.com/image.png","thumbnail_url":"http://example.com/thumbnail/image.png"}]
Zend môže analyzovať hodnotu JSON do poľa PHP.
