Nou is het probeel: $.isArray(tResult['cookies']) => false...
console.log(typeof(tResult['cookies'])); => Object
console.log(tResult['cookies'].length; => undefined
Wie kan mij hiermee helpen, het enige wat ik wil is dat 'currentCookies' deze cookies weer inlaad zoals ik ze voorheen opgebouwd heb in jQuery om weer te kunnen toevoegen of verwijderen vanuit jQuery en daarna sla ik t weer terug op.
Ik gebruik ook 'unnamed' array en dat werkt wel perfect.
ja ik weet het, maar weet niet goed hoe ik het anders moet uitleggen.
Het probleem zit m in de frontend, en ik gebruik json_encode() om de data in json te hebben zodat de jQuery m kan lezen. (heb ook de 2e param gebruikt bij de encode, maar helaas, precies hetzelfde)
//ajax POST request
complete: function (data) {
var tResult = JSON.parse(data.responseText);
console.log(tResult)
if("cookies" in tResult) {
console.log('has cookies!');
console.log('Type of tResult: ' + typeof(tResult));
console.log(Type of cookies: ' + typeof(tResult['cookies']);
console.log(tResult['cookies']);
var tmpCookies = tResult['cookies'];
console.log('Amount : ' + tmpCookies.length);
if($.isArray(tResult['cookies'])) {
///
} else {
console.log('cookies seems not to be an array');
}
Console output:
JSON:
result: true
cookies: {...}
0 : {
function: 'analytic'
name: '_ga'
value: 'asdasdasd'
}
1 : {
function: 'analytic'
name: '_ga'
value: 'asdasdasd'
}
has cookies!
Type of tResult: Object
Type of cookies: object
Object { 0: {}, 1: {} }
//opengeklapt
0: Object { function: "analytic", name: "_ga", value: "asdasdasd" }
1: Object { function: "analytic", name: "_ga", value: "asdasdasd" }
<prototype>: Object { ... }
Amount : undefined
cookies seems not to be an array
Zoals ik zie: is het nu geen normale 'array'
De cookies heb ik opgebouwd als test:
Ik gebruik dit vrijwel overal, maar is de eerste keer dat ik echt 'named' index gebruik in een array, welke vervolgens als array opgeslagen is.
Aan de PHP kant gaat alles prima, zit nu alleen hiemee te klooien en ligt denk ik aan de omringende {} van cookies, dat die eigenlijk [] horen te zijn
@Ivo, bedankt voor je debug hulp!
Ik zie in de responseText dat de 'array' van cookies de index niet klopt en lijkt nu alsof de 'hoofd' array, nu index heeft gekregen.
Waarschijnlijk door testen van het verwijderen van tussenliggende cookies en heeft het een indexnr gekregen.
Voordeel is dan ook dat je als je de betreffende url aanroept in je browser, je ook overzichtelijk json op je scherm krijgt (in elk geval bij mijn FireFox en Chrome)
Ik heb niks weg gehaald uit de posts :)
Ik heb idd geen header aangegeven in m'n php. Zal dat eens ff overal toevoegen daar waar ik json response terug geef.
@Arien,
een array heeft inderdaad altijd een key/index, en je kan eventueel zelf een 'named' key/index maken inderdaad.
Als je m'n vorige bericht doorneem, zie je het verschil, en bij de 'named' key/index gaat het fout in jQuery, dan ziet jQuery het als een object en geen array.
Dan moet ik met een .each() loop werken, wat ik niet wil.
Die named index komt verwacht ik omdat ik simpelweg een unset() doe op de cookies array op index 1 en niet terug sorteerde.
Heb net klein foutje gemaakt in m'n php script en nou zit ik heel ff tegen 'resource limit' te hikken en kan ik eventjes niet verder :'-D
Gaat goed komen, heb met jullie hulp t probleem gevonden!