Le code:
function updateDashboardData() {
$.getJSON("includes/system/ajaxDataInterface.php", {recordcount:1}, function(data) {
$('.stationContainer').each(function(data) {
var bsID = $(this).attr("id");
var bsStatus = $(this).children('.stationStatus');
alert(data[bsID][0].time);
bsStatus.find('.bs_maxHandsets').text(data[bsID][0].maxHandsets);
bsStatus.find('.bs_time').text(data[bsID][0].time);
});
});
}
Les données d'objet:
{
"A5A50000": [{
"bsid": "A5A50000",
"chanCount": 17,
"time": "2009-05-27 16:36:45",
"avgInterference": 1.711765,
"maxInterference": 4.97,
"avgHandsets": 205.1176,
"maxHandsets": 315,
"avgCalls": 6.4118,
"maxCalls": 13,
"avgCBA": 3868.98059,
"maxCBA": 7463,
"sumSuccessCBA": 197318,
"sumTimeoutHandoff": 133,
"sumAttemptHandoff": 1028,
"sumDeniedHandoff": 216,
"sumConfirmHandoff": 679,
"sumHandoffNetwork": 61873,
"sumJoinNetwork": 96888,
"sumLeaveNetwork": 93754,
"sumRcvdKeepalive": 98773,
"sumTimeoutKeepalive": 19748,
"sumAttemptUplink": 93689,
"sumBlockedUplink": 62453
}]
}
Le problème:
alert(data.A5A50000[0].time);
affiche correctement "2009-05-27 16:36:45".
alert(bsID);
affiche correctement "A5A50000".
alert(data.bsID[0].time);
signale que "data.bsID n'est pas défini".
alert(data[bsID][0].time);
signale "les données [bsID] ne sont pas définies".
Je ne sais pas trop quand une variable est/n'est pas évaluée. Peut-être que je néglige quelque chose de stupide, mais je ne peux pas comprendre mon problème ici.
Vous pouvez accéder aux propriétés des objets par notation par points ou par notation entre crochets.
var x = {'test': 'hi'};
alert(x.test); // alerts hi
alert(x['test']); // alerts hi
Lorsque vous avez une valeur dynamique, vous devez utiliser cette dernière:
var property = 'test';
alert(x.property); // looks for x.property, undefined if it doesn't exist
alert(x[property]); // looks for x['test'], alerts hi
Donc ce que vous voulez vraiment, c'est:
alert(data[bsID][0].time);
MODIFIER :
Je ne sais pas ce que vous faites mal, mais cela fonctionne pour moi sur la console de Firebug:
var data = {"A5A50000":[{"bsid":"A5A50000","chanCount":17,"time":"2009-05-27 16:36:45","avgInterference":1.711765,"maxInterference":4.97,"avgHandsets":205.1176,"maxHandsets":315,"avgCalls":6.4118,"maxCalls":13,"avgCBA":3868.98059,"maxCBA":7463,"sumSuccessCBA":197318,"sumTimeoutHandoff":133,"sumAttemptHandoff":1028,"sumDeniedHandoff":216,"sumConfirmHandoff":679,"sumHandoffNetwork":61873,"sumJoinNetwork":96888,"sumLeaveNetwork":93754,"sumRcvdKeepalive":98773,"sumTimeoutKeepalive":19748,"sumAttemptUplink":93689,"sumBlockedUplink":62453}]};
var bsID = 'A5A50000';
alert(data[bsID][0].time);
En Javascript, vous pouvez utiliser une notation de type objet ou tableau pour rechercher un attribut. Les éléments suivants sont équivalents:
data.A5A50000
data['A5A50000']
Avec la deuxième syntaxe, vous pouvez utiliser une variable à la place d'une chaîne d'objet:
data[bsID][0]