var list = [];
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.Push(item.text);
});
});
console.log(list.length);
list.length
renvoie toujours 0. J'ai parcouru le fichier JSON dans firebug, il est bien formé et tout va bien. Je n'arrive pas à ajouter un élément au tableau. Qu'est-ce qui me manque?
Puisque $.getJSON
Est asynchrone, je pense que votre code console.log(list.length);
se déclenche avant que votre tableau ne soit rempli. Pour corriger cela, placez votre déclaration console.log
Dans votre rappel:
var list = new Array();
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.Push(item.text);
});
console.log(list.length);
});
Vous faites une demande ajax qui est asynchrone. Par conséquent, votre journal de console de la longueur de la liste est généré avant la fin de la demande ajax.
Le seul moyen d'obtenir ce que vous voulez est de changer l'appel ajax pour qu'il soit synchrone. Vous pouvez le faire en utilisant .ajax et en passant asynch: false, mais cela n’est pas recommandé, car elle verrouille l’interface utilisateur jusqu’à ce que l’appel soit renvoyé. Si le retour échoue, il faut que l’utilisateur tombe en panne hors du navigateur.
J'espère que cela vous aidera..
var list = [];
$(document).ready(function () {
$('#test').click(function () {
var oRows = $('#MainContent_Table1 tr').length;
$('#MainContent_Table1 tr').each(function (index) {
list.Push(this.cells[0].innerHTML);
});
});
});