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.