JSON.stringify

Status
Niet open voor verdere reacties.

poashoas

Gebruiker
Lid geworden
31 mei 2008
Berichten
66
Ik heb een JSON stringify probleem.

Eerst geeft ik een javascript functie een json_encoded(array) mee in PHP

$view->editorScript = $view->inlineScript()->appendFile('/public/js/underscore/underscore-min.js')
->appendFile('/public/js/backbone/backbone-min.js')
->appendFile('/public/js/admin/artikelBeheer.js')
->appendScript('
var app = new Application({'
. 'timestamp : \'' . $this->timestamp . '\', '
. 'module : \'' . $this->module . '\', '
. 'dir : \'' . $this->dir . '\', '
. 'modus : \'' . $this->modus . '\', '
. 'afbeeldingen :' . json_encode($this->afbeeldingen)
. '});'​
);

Als ik die in this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] stop,
en er een object key-value "actief : 0" aan toevoeg,
en het vervolgens JSON.stringify dan wordt alleen de afbeeldingen meegenomen en niet de key actief.
Volgens Firebug staat die vóór het stringifien wel degelijk in het object.

this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] = afbeeldingen;
this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp]['actief'] = 0;
createCookie('geplaatsteBestanden', JSON.stringify(this.geplaatsteBestanden));
 
Hej :)

Eerst geeft ik een javascript functie een json_encoded(array) mee in PHP

[JS]this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] = afbeeldingen; //Zoals je zegt, is afbeeldingen van type Array
this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp]['actief'] = 0; //Hier wordt een niet-numerieke index ('actief') aan die array toegevoegd
createCookie('geplaatsteBestanden', JSON.stringify(this.geplaatsteBestanden)); //Als je JSON.stringify een array geeft, kun je in de output alleen de waarden bij numerieke keys terugvinden[/JS]
Gewoon even zorgen dat je 't juiste type hebt dus ;) Bijvoorbeeld:

[JS]function toObj(x) {
var obj = {};
for (var k in x) {
obj[k] = x[k];
}
return obj;
}

this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] = toObj(afbeeldingen);[/JS]

Hoop dat dit helpt!
Gr. Robin
 
Laatst bewerkt:
Robin,

Bedankt het heeft me verder geholpen, ik sluit de post.
Thanks for the help!!

Gr. Patrick

Hej :)



[JS]this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] = afbeeldingen; //Zoals je zegt, is afbeeldingen van type Array
this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp]['actief'] = 0; //Hier wordt een niet-numerieke index ('actief') aan die array toegevoegd
createCookie('geplaatsteBestanden', JSON.stringify(this.geplaatsteBestanden)); //Als je JSON.stringify een array geeft, kun je in de output alleen de waarden bij numerieke keys terugvinden[/JS]
Gewoon even zorgen dat je 't juiste type hebt dus ;) Bijvoorbeeld:

[JS]function toObj(x) {
var obj = {};
for (var k in x) {
obj[k] = x[k];
}
return obj;
}

this.geplaatsteBestanden.afbeeldingContainer[this.options.timestamp] = toObj(afbeeldingen);[/JS]

Hoop dat dit helpt!
Gr. Robin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan