Toon posts:

[JS] JS Array via POST in een form versturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey mensen, ik zit met het volgende probleem:

via PHP wordt een stuk javascript gegenereerd waarin een array zit gevuld met arrays (2dim array dus).

In de html pagina worden deze waarden gebruiksvriendelijk gewijzigd in de array, en vervolgens wil ik de array via een POST in een form versturen.
Echter hoe verstuur ik een array?

Normaal gesproken maak ik een hidden variabele en gooi ik de javascript value daarin, maar dat is nu geen optie volgens mij om het volgende:

de array heeft als verwijzingsnamen de UID's van emails vanaf een server. die UID's bevatten ook aparte tekens als + en / en dus kan ik die niet als variabelenamen nemen, maar wel als labelnamen dus in een array (alsin thearray['389EWRUN3+09'][] )

Ik kan ook geen andere unieke code nemen ipv de UID omdat die er simpelweg niet is. dus ik MOET die UID meesturen.

Ik hoop dat het duidelijk is, hopelijk kan iemand hier iets mee!

wat ik eventueel zou kunnen doen is hiddenvars aanmaken met voor elke UID een uniek nr (1 en oplopend) en in de eerste var de UID zetten. dus bijv:

de1a = 'orej893+8un' (de uid dus)
de1b = 'waarde1'
de1c = 'waarde2'
de1d = 'waarde3'
de2a = 'kwerno38iu' (volgende uid)
de2b = 'waarde1'
de2c = 'waarde2'
de2d = 'waarde3'

maar dat moet vast anders kunnen!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Gebruik de functie toString om alle waarden van een array in een string te zetten. Deze string zet je vervolgens in een hidden input element, die je invoegt in je formulier:

JavaScript:
1
2
3
4
5
6
7
8
9
10
var myData= array('aap', 'noot', 'mies');

var sExportData = myData.toString();

/* add hidden input elements for data */
oInput = document.createElement('input');  
oInput.setAttribute('type', 'hidden');
oInput.setAttribute('name', 'myData');
oInput.setAttribute('value', sExportData);
oForm.appendChild(oInput);


Met de functie encodeURIComponent kun je speciale tekens coderen om te versturen. Bij een multidimensionale array, zou ik van iedere rij een string maken, en deze strings mbv een scheidingsstring (bijv '____') aan elkaar plakken. In PHP kun je die string vervolgens laten exploderen.

Dus:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
var myData= new Arrray(new Array('a','b','c'), new Array('d', 'e','f'));

/* put columns and data in string */ 
var iRowLength = myData.length;

for (var i=0; i<iRowLength; i++)
{    
  aExportData[i] = encodeURIComponent(myData[i].join('___'));      
}

var sExportData = aExportData.toString();


P.S. code is niet getest

[ Voor 39% gewijzigd door Rekcor op 20-03-2007 10:00 . Reden: toevoeging ]


  • b19a
  • Registratie: September 2002
  • Niet online
Je zou wellicht iets aan JSON kunnen hebben, dan heb je ook je hele array in 1 string. PHP 5(.2) kan standaard deze JavaScript Object Notatie weer terugvertalen naar gewone objecten of arrays. Eventueel kun je deze ook zelf schrijven (niet veel werk).

Verwijderd

Topicstarter
Super bedankt!

Ik heb het nu als volgt opgelost:

Ik loop door de array, en maak van elke 2de diemensie array een string, en maak voor elke 2de diemensiearray een hidden var in de form waar ik hem inzet.

Die UID geef ik gewoon mee als extra item in de array.

thanks!