2010-04-21 4 views
1

J'ai transmis du code JSON à ma page via un service Web. J'ai utilisé JSON.NET pour convertir XML en JSON. La sortie JSON me semble correcte, mais je suis incapable d'accéder à certains éléments de la réponse. Je ne sais pas pourquoi cela ne fonctionne pas. J'utilise jQuery pour lire la réponse et faire l'appel webservice. Même lorsque je tente de lire la longueur du tableau, il dit « non défini »impossible d'obtenir des valeurs de JSON converties à partir de XML

function GetFeed(){ 

     document.getElementById("marq").innerHTML = ''; 

     $.ajax({ 
      type: "POST", 
      url: "ticker.asmx/GetStockTicker", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(response) {     

      var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

      for (var i = 0; i < obj.length; i++) { 
       $('#marq').html(obj[i].person); 
      }    

      } 
     }); 

    } 

Ceci est un copier-coller de ma réponse car il est apparu dans Firebug:

{"d":"{\"?xml\":{\"@version\":\"1.0\",\"@standalone\":\"no\"},\"root\":{\"person\":[{\"@id\":\"1\",\"name\":\"Alan\",\"url\":\"http://www.google.com\"},{\"@id\":\"2\",\"name\":\"Louis\",\"url\":\"http://www.yahoo.com\"}]}}"} 
+0

Avez-vous essayé de faire un JSON.Parse pour obtenir un objet Javascript? L'analyseur JSON Douglas Crockfords (json.org/json2.js) a bien fonctionné pour moi. –

Répondre

2

Vous devriez être en mesure de lire la réponse sans faire appel à l'opérateur ternaire ... de toute façon si vous essayez de itérer sur le tableau de personnes que vous devez cibler objet response.d.root.person, et non son parent:

for (var i = 0; i < response.d.root.person.length; i++) { 
    $('#marq').html(d.root.person[i].name //.url, ...); 
} 
0

Je sais que Jq Ajax complet de uery a eu le problème qu'il est toujours appelé deux fois lorsque la requête est terminée. Je ne suis pas sûr que ce soit le cas pour le succès.

Questions connexes