web-dev-qa-db-fra.com

Comment ajouter 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 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?

58
NATO24

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);
});
117
Derek Swingley

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.

3
redsquare

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);
            });
        });
    });
3
aji