2011-09-04 2 views
0

Je suit réponse reurned d'un appel AJAX à la fonction de réussiteExtraire des données à tableau à partir appel ajax

{"0":"A", 
"1":"B", 
"2":"C", 
"saved_as":["M","K","L"]} 

Est-il possible d'avoir dans un tableau comme suit

dataObj[0]="A"; 
dataObj[1]="B"; 
dataObj[2]="C"; 

Sur un Côté non retourné les données peuvent avoir plus que les trois premiers éléments. Le dernier élément sera toujours sauvegardé en tant que

Merci.

Répondre

3

Si vous voulez juste les propriétés numériques (ce qui serait logique), vous pouvez le faire:

var array = []; 

for(var name in dataObj) { 
    if(!isNaN(+name)) { 
     array[ name ] = dataObj[ name ]; 
    } 
} 

DEMO:http://jsfiddle.net/hW8Jm/

(Je suppose que les données JSON a déjà été analysé .)

Ce propriétés énumère les dataObj de, tente une conversion toNumber utilisant le unaire +, puis vérifie si le résultat est NaN(pas un nombre).

Si ce n'est pas NaN(c'est un nombre), la valeur de cette propriété est ajoutée au tableau en utilisant la propriété comme index du tableau.

+0

Je reçois une réponse sous forme de chaîne.Comment la convertir en dataObj pour que je puisse l'exécuter en boucle? –

+0

@Sonesh Dabhi: Si vous utilisez les méthodes AJAX de jQuery, alors si vous lui donnez simplement un type de données json, jQuery s'assurera qu'il est analysé. Sinon, vous utilisez 'var parsedObj = JSON.parse (dataObj)' pour l'analyser. Pour prendre en charge les anciens navigateurs, vous pouvez inclure [la bibliothèque JSON2] (https://github.com/douglascrockford/JSON-js/blob/master/json2.js). – user113716

+0

var dataObj = eval ('(' + data + ')'); Je ne suis pas sûr de la différence entre les deux, mais cela a fonctionné. –

Questions connexes