Question

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 retourne toujours 0. J'ai parcouru le JSON dans Firebug et il est bien formé et tout semble bien. Je ne peux pas sembler ajouter un élément au tableau ce que je manque?

Était-ce utile?

La solution

Depuis $.getJSON est async, je pense que votre code console.log(list.length); est mise à feu avant votre tableau a été peuplée. Pour corriger ce mettre 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);
});

Autres conseils

Vous faites une demande de paiement ajax qui est asynchrone donc votre journal de la console de la longueur de la liste se produit avant que la demande de paiement ajax terminée.

La seule façon de parvenir à ce que vous voulez changer est l'appel ajax être synchrone. Vous pouvez le faire en utilisant le .ajax et passant asynch. Faux mais ce n'est pas recommandée car elle bloque l'interface utilisateur jusqu'à l'appel est de retour, si elle ne retourne pas l'utilisateur doit se bloquer sur le navigateur

Espérons 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);
            });
        });
    });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top