[jQuery] array.push({}) werkt niet zoals het moet
Ik heb een formulier dat ik met een ajax call wil versturen. Dat doe ik met
Code (php)
1
2
3
2
3
$(document).on('submit','.lightbox-form',function(){
var post_vars = $('.lightbox-form').serializeArray();
});
var post_vars = $('.lightbox-form').serializeArray();
});
Ik wil alleen daarna nog een waarde toevoegen aan die array.
Dat doe ik met
Code (php)
1
2
2
var soort = $(this).attr('name'); // in dit geval is dat 'wijzigen'
post_vars.push({soort: soort});
post_vars.push({soort: soort});
Als ik dan dit met een ajax call verstuur en de output van het php bestand in de console zet
krijg ik alle waarden van de input velden maar nergens een teken van $_POST['soort'] of iets dergelijks. Wel een 'undefined'.
Weet iemand wat ik verkeerd doe of hoe ik het beter kan doen?
Maar ik denk dat post_vars helemaal geen array is, want in dat geval zou je de keys niet goed door krijgen in php. Volgens mij is post_vars dus al een literal object en in dat geval zou je gewoon dit moeten kunnen doen:
Gewijzigd op 04/04/2013 10:40:13 door Erwin H
Code (php)
1
2
3
4
2
3
4
var url = $('.lightbox-form').attr('action');
$.post(url,post_vars).done(function(data){
console.log(data);
});
$.post(url,post_vars).done(function(data){
console.log(data);
});
Toevoeging:
Ik zal even jouw voorbeeld gebruiken, bedankt!
Toevoeging op 04/04/2013 10:48:28:
Ik heb jouw voorbeeld nu gebruikt. Het undefined gedeelte is weg, maar het $_POST['soort'] is er niet bij gekomen.
Gewijzigd op 04/04/2013 10:45:32 door Albert de Wit
Quote:
Met andere woorden, je eerste opzet was bijna goed. Je moet dus wel een object literal als element meegeven, maar met specifieke name en value properties. Dit zou denk ik dan wel werken:
Gewijzigd op 04/04/2013 10:57:38 door Erwin H
Code (php)
1
2
3
4
2
3
4
post_vars[post_vars.length] = { soort: soort}; // undefined is dan weer terug
post_vars['soort'] = soort; // undefined is dan weer weg maar er is geen $_POST['soort'] aanwezig
post_vars.push({soort: soort}); // undefined is dan weer terug.
post_vars.soort = soort; // undefined is dan weer weg en de $_POST['soort'] is er dan niet
post_vars['soort'] = soort; // undefined is dan weer weg maar er is geen $_POST['soort'] aanwezig
post_vars.push({soort: soort}); // undefined is dan weer terug.
post_vars.soort = soort; // undefined is dan weer weg en de $_POST['soort'] is er dan niet
Toevoeging op 04/04/2013 11:02:14:
Hey, top! Hij werkt helemaal! Zag dat over het hoofd want ik dacht even dat het alleen maar 2 $_POST variabelen erbij zou zetten van $_POST['name'] en $_POST['value']. Hartstikke bedankt!