Comment append des éléments à un tableau dans jQuery?

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 JSON dans firebug et il est bien formé et tout semble correct. Je n’arrive pas à append un élément au tableau. Qu’est-ce qui me manque?

Puisque $.getJSON est asynchrone, je pense que votre console.log(list.length); le code est déclenché avant que votre tableau ait été rempli. Pour corriger cela, placez votre instruction console.log dans votre callback:

 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 effectuez une requête ajax qui est asynchrone, par conséquent votre journal de console de la longueur de la liste se produit avant la fin de la requête ajax.

Le seul moyen de réaliser ce que vous voulez est de modifier l’appel ajax pour qu’il soit synchrone. Vous pouvez le faire en utilisant le fichier .ajax et en transmettant asynch: false. Toutefois, cela n’est pas recommandé, car il verrouille l’interface utilisateur jusqu’à ce que l’appel soit renvoyé.

J’espère que ceci 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); }); }); });