2010-12-01 41 views
0

J'ai essayé de comprendre comment retourner les liens à partir des résultats de yql, mais jusqu'à présent, la seule chose que j'obtiens est [object Object] et je ne vais nulle part jusqu'ici, pourriez-vous expliquez-moi pourquoi cela se passe-t-il? Tout ce que je veux, c'est afficher les résultats sous forme de liens.Récupérer l'url d'un résultat yql

<div id="funfacts"> 
</div> 
<script> 
function funfacts(o){ 
    var facts = document.getElementById('funfacts'); 
    if(facts){ 
    var data = o.query.results.a; 
    var out = document.createElement('a'); 
    out.className = 'fact'; 
    facts.appendChild(out); 
    out.innerHTML = data.join("<br />"); 
    } 
} 
</script> 
<script src="http://query.yahooapis.com/v1/public/yql?q=select%20href%20from%20html%20where%20url%3D'http%3A%2F%2Fcid-a59bebc211b678a6.office.live.com%2Fbrowse.aspx%2FPublic%2Fhi5'%20and%20xpath%3D'%2F%2Fa%5B%40id%3D%22download%22%5D'%0D%0A&format=json&diagnostics=true&callback=funfacts"></script> 

J'espère que cet exemple est suffisant pour comprendre, tout ce que je suis en train de faire est pour elle pour afficher la liste des urls de cette page, mais il renvoie uniquement une liste de lignes [objet d'objet].

Répondre

1

Si vous effectuez un fichier console.log sur l'objet de retour, vous verrez que les résultats sont en fait un tableau contenant trois tableaux. Ainsi, pour obtenir l'URL que vous réellement besoin de faire quelque chose comme o.query.results.a [n] .href

results: Object 
a: Array[3] 
0: Object 
href: "http://public.blu.livefilestore.com/y1pXKbPqGSt2TkgDjLyAOoYLWSPBnYLdxVtOHoR4W0sERdCyCncGu4LR8Bg4e81W…" 
__proto__: Object 
1: Object 
2: Object 

Voici le jsfiddle

+0

J'ai réussi à faire les liens apparaissent en remplaçant le data.join avec [data [0] .href] .join, cependant, y at-il de toute façon pour faire le [n] comme pour n'importe quel nombre? Par exemple, imaginez que j'ai 100 liens, il faudra beaucoup de travail pour écrire les 100 données [n] .href! N'y a-t-il pas de "hack" pour dire au script d'afficher tous les résultats qui existent? – Shadow

+0

vous pouvez faire une boucle for sur o.query.results.a où la résiliation serait o.query.result.a.length – kjy112

+0

Cependant, chaque fois que j'essaie de placer o.query.result.a.100 ou [100] , une erreur de syntaxe se produit, ou ne devrait pas être fait de cette façon? – Shadow