Ir para conteúdo
Fórum Script Brasil
  • 0

Recuperar dados XML e jogar num Array


moisesf

Pergunta

Olá amigos.

Hoje tenho este script abaixo fazendo um loop de 1 a 6 e exibindo as imagens de uma a uma.

Mas preciso de recuperar as fotos do flicker, de forma automática.

Pois desta forma eu precisaria de escrever uma a uma qual seria a foto.

<script language="javascript" type="text/javascript">


var Slide = new Array ("foto1.jpg","foto2.jpg","foto3.jpg","foto4.jpg","foto5.jpg","foto6.jpg"); 
var indSlide = 0;
var ultSlide = Slide.length -1;
// Função controla a seqüência de slides.
function MostraSlide_time(direcao){
   indSlide = indSlide + direcao;
   if(indSlide > ultSlide){indSlide = 0};
   if(indSlide < 0) {indSlide = ultSlide};
   /*document.FigSlide.src = Slide[indSlide];*/
   foto = Slide[indSlide];
   document.getElementById("mostra_foto").style.background="url('images/" + foto + "') no-repeat";

 }

</script>
Abaixo eu tenho o retorno em XML da url: http://api.flickr.com/services/rest/?metho...157623253334570
<?xml version="1.0" encoding="utf-8" ?> 
- <rsp stat="ok">
- <photoset id="72157623253334570" primary="4292539586" owner="27447076@N07" ownername="Lorenzo Madrid" page="1" per_page="500" perpage="500" pages="1" total="31">
  <photo id="4292539586" secret="3ce21674aa" server="2702" farm="3" title="Bellvue PWS-3374" isprimary="1" /> 
  <photo id="4292540634" secret="92f2318265" server="4021" farm="5" title="Bellvue PWS-3377" isprimary="0" /> 
  <photo id="4292541426" secret="d1f384e2aa" server="2719" farm="3" title="Bellvue PWS-3383" isprimary="0" /> 
  <photo id="4292542320" secret="84b447e5c5" server="4006" farm="5" title="Bellvue PWS-3386" isprimary="0" /> 
  <photo id="4291802033" secret="4051c32fe1" server="4042" farm="5" title="Bellvue PWS-3392" isprimary="0" /> 
  <photo id="4291802833" secret="f77c166dcc" server="2725" farm="3" title="Bellvue PWS-3397" isprimary="0" /> 
  <photo id="4291803447" secret="6dfd907278" server="4011" farm="5" title="Bellvue PWS-3398" isprimary="0" /> 
</photoset>
  </rsp>
Ou mesmo pegar os dados de outro método: JSON: http://www.flickr.com/services/rest/?metho...157623253334570 qUE RETORNA DA FORMA ABAIXO:
jsonFlickrApi({
"photoset":{
"id":"72157623253334570", 
"primary":"4292539586", 
"owner":"27447076@N07", 
"ownername":"Lorenzo Madrid", 

"photo":[{
"id":"4292539586", 
"secret":"3ce21674aa", 
"server":"2702", 
"farm":3, 
"title":"Bellvue PWS-3374", 
"isprimary":"1"
}, 
"stat":"ok"})
Preciso de pegar "farm","server", "id+secret", e jogar tudo dentro de um ARRAY. Abaixo os dados que necessito que sejam pegos para gerar o caminho e nome do arquivo.
http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg

Escrevi abaixo mais ou menos o que preciso teoricamente.

Como recuperar os dados e jogar nesse script?


&lt;script language="javascript" type="text/javascript">

var url_img = http://farm{farm-id}.static.flickr.com/{server-id}/;

var array_img = {id}_{secret}.jpg;

var Slide = new Array (array_img); 
var indSlide = 0;
var ultSlide = Slide.length -1;
// Função controla a seqüência de slides.
function MostraSlide_time(direcao){
   indSlide = indSlide + direcao;
   if(indSlide > ultSlide){indSlide = 0};
   if(indSlide < 0) {indSlide = ultSlide};
   /*document.FigSlide.src = Slide[indSlide];*/
   foto = Slide[indSlide];
   document.getElementById("mostra_foto").style.background="url(url_img + foto + "') no-repeat";


}

</script>

Editado por moisesf
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Pelo jeito que disse aí em cima, o flickr executa uma função de retorno do json.

Então basta criar uma função de mesmo nome e definir como quer passear no objeto.

function jsonFlickrApi(data){
    for (var x = 0; x < data.photo.length; x++) {
        data.photo[x].id
        data.photo[x].secret
        data.photo[x].server
        data.photo[x].farm
    }
}

Acima você consegue pegar todos os atributos de "photos" já que é um array de objetos.

O resto acho que você consegue ^_^

Qualquer dúvida ou problema é só postar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigos.

Preciso que o loop guarde os resultados encontrados na var "url_img",

Pois a tratarei como um array.

No momento, está listando uma a uma, mas preciso que todas encontradas fiquem separadas por vírgula nessa var "url_img".

O estranho é que quando habilito abaixo o alert , o slide funciona porque deu uma parada.

Poderiam me ajudar?

Obrigado

&lt;script>

function jsonFlickrApi(rsp){

 window.rsp = rsp;
                   var s = "";
 s =  rsp.photoset.photo.length;

    for (var x = 0; x < rsp.photoset.photo.length; x++) {
    photo = rsp.photoset.photo[x];
       
            

     var url_img="http://farm"+photo.farm+ ".static.flickr.com/" +photo.server+ "/" +photo.id+ "_" +photo.secret+ ".jpg";

     /* alert(url_img);*/
    



var intervalo = "";
 intervalo = window.setInterval("MostraSlide_time(1)", 5000);

 var qtdImagens=s;

     imagens = new Array (url_img); 
  
     
     

  for(i = 0; i < qtdImagens; i++) { 
  var indImg = Math.round(Math.random()*(imagens.length - 1));
       var foto = imagens[indImg];   
   

document.getElementById("mostrafoto").style.background="url('" + foto  + "') no-repeat";   
         }
                 }
                 

                 }
                 
            
 </script>

Editado por moisesf
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...