Question

Je retourne une liste < > à partir d'un service Web sous forme de liste d'objets JSON. J'essaie d'utiliser une boucle for pour parcourir la liste et extraire les valeurs des propriétés. Voici un exemple du code JSON renvoyé:

{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder",
 "EmployeeName":"Janet Leverling",
 "EmployeeTitle":"Sales Representative",
 "RequiredDate":"\/Date(839224800000)\/",
 "OrderedProducts":null}]}

J'essaie donc d'extraire le contenu en utilisant quelque chose comme ceci:

function PrintResults(result) {

for (var i = 0; i < result.length; i++) { 
    alert(result.employeename);
}

Comment cela devrait-il être fait?

Était-ce utile?

La solution

a eu le même problème aujourd'hui, votre sujet m'a aidé alors voici la solution;)

 alert(result.d[0].EmployeeTitle);

Autres conseils

Faites attention, d est la liste.

for (var i = 0; i < result.d.length; i++) { 
    alert(result.d[i].employeename);
}

C'est proche! Essayez ceci:

for (var prop in result) {
    if (result.hasOwnProperty(prop)) {
        alert(result[prop]);
    }
}

Mise à jour:

Si votre résultat est vraiment un tableau d'un seul objet, vous devrez peut-être procéder ainsi:

for (var prop in result[0]) {
    if (result[0].hasOwnProperty(prop)) {
        alert(result[0][prop]);
    }
}

Ou si vous souhaitez parcourir chaque résultat du tableau s'il y en a plus, essayez:

for (var i = 0; i < results.length; i++) {
    for (var prop in result[i]) {
        if (result[i].hasOwnProperty(prop)) {
            alert(result[i][prop]);
        }
    }
}

La voici:

success: 
    function(data) {
        $.each(data, function(i, item){
            alert("Mine is " + i + "|" + item.title + "|" + item.key);
        });
    }

Exemple de texte JSON:

{"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}

Puisque vous utilisez jQuery, vous pouvez aussi bien utiliser chaque méthode ... De plus, il semble que tout est une valeur de la propriété 'd' dans cet objet JS [Notation].

$.each(result.d,function(i) {
    // In case there are several values in the array 'd'
    $.each(this,function(j) {
        // Apparently doesn't work...
        alert(this.EmployeeName);
        // What about this?
        alert(result.d[i][j]['EmployeeName']);
        // Or this?
        alert(result.d[i][j].EmployeeName);
    });
});

Cela devrait fonctionner. sinon, vous pouvez peut-être nous donner un exemple plus long du JSON.

Modifier: Si rien de tout cela ne fonctionne, je commence à penser que la syntaxe de votre code JSON pourrait présenter un problème.

var d = $.parseJSON(result.d);
for(var i =0;i<d.length;i++){
    alert(d[i].EmployeeName);
}

Cela fonctionnera!

$(document).ready(function ()
    {
        $.ajax(
            {
            type: 'POST',
            url: "/Home/MethodName",
            success: function (data) {
                //data is the string that the method returns in a json format, but in string
                var jsonData = JSON.parse(data); //This converts the string to json

                for (var i = 0; i < jsonData.length; i++) //The json object has lenght
                {
                    var object = jsonData[i]; //You are in the current object
                    $('#olListId').append('<li class="someclass>' + object.Atributte  + '</li>'); //now you access the property.

                }

                /* JSON EXAMPLE
                [{ "Atributte": "value" }, 
                { "Atributte": "value" }, 
                { "Atributte": "value" }]
                */
            }
        });
    });

L'essentiel à ce sujet consiste à utiliser la propriété exactement comme l'attribut de la paire clé-valeur JSON.

J'ai l'appel suivant:

$('#select_box_id').change(function() {
        var action = $('#my_form').attr('action');
    $.get(action,{},function(response){
        $.each(response.result,function(i) {

            alert("key is: " + i + ", val is: " + response.result[i]);

        });
    }, 'json');
    });

La structure renvoyée par le serveur ressemble à:

{"result":{"1":"waterskiing","2":"canoeing","18":"windsurfing"}}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top