Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    Memorizzare una variabile da una requestXml

    Salve il problema che non so come affrontare è quello di memorizzare un valore ottenuto tramite richiesta ajax in una variabile fruibile all'esterno della di tale richiesta, di seguito il codice:

    codice:
    window.addEvent("domready", function(){
    
    function show(num, imgpath){	
    	new Request({
    		url:"js/imgs.xml",
    		update:$("ajax"),
    		onRequest:function(){ $("ajax").set("html","WAITING FOR ANSWER..."); },//onRequest
    		onProress:function(event, xhr){ $("ajax").set("html", event.total); },
    		onSuccess:function(txt, xml){
    			
    			var root = xml.documentElement;
    			imgs = root.getElementsByTagName("img");
    			img = (Browser.Engine.trident)? imgs[num].text : imgs[num].textContent;
    			$("ajax").set("html", "OK - "+root.getElementsByTagName("img").length+" - "+img);
    			imgpath = img;
    		},
    		onFailure:function(){ $("ajax").set("html","ERROR"); }
    	}).send(null);
    }
    	
    function show_img(){
    	num = Math.round( (Math.random()*4) );
    	var imgpath;
    	show(num, imgpath);
    	$("box_show").setStyle("background-image", "url(imgs/"+imgpath+")");
    }	
    
    show_img();
    
    )};//END "domready"
    Il framework javascript è Mootools.
    Grazie in anticipo.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se ti serve utilizzare la risposta all'interno del metodo chiamante basta che imposti il return alla funzione, altrimenti se ti serve utilizzarla in più metodi dichiara una variabile globale...

  3. #3
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Io ho fatto così, ma variabile resta sempre indefinita:
    codice:
    window.addEvent("domready", function(){
    
    var globale = 0;
    
    function show(){	
    	new Request({
    		url:"js/imgs.xml",
    		update:$("ajax"),
    		onRequest:function(){ $("ajax").set("html","WAITING FOR ANSWER..."); },//onRequest
    		onProress:function(event, xhr){ $("ajax").set("html", event.total); },
    		onSuccess:function(txt, xml){
    			
    			var root = xml.documentElement;
    			imgs = root.getElementsByTagName("img");
    			img = (Browser.Engine.trident)? imgs[num].text : imgs[num].textContent;
    			$("ajax").set("html", "OK - "+root.getElementsByTagName("img").length+" - "+img);
    			globale = img;
    		},
    		onFailure:function(){ $("ajax").set("html","ERROR"); }
    	}).send(null);
    }
    	
    show();
    
    $("divTest").set("html", globale);
    
    )};//END "domready"
    Ho cambiato un po' il codice, ma cmq globale resta sempre a ZERO....
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Devi mettere la dichiarazione della variabile fuori dalla funzione... da ogni funzione.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    "br1" fuori dove?
    codice:
    var imgs = 0; //<- in questo modo non funziona cmq, rimane sempre a ZERO
    
    window.addEvent("domready", function(){
    	
    	
    	var numR = -1;
    	
    function show(imgs){	
    	new Request({
    		url:"js/imgs.xml",
    		update:$("ajax"),
    		onRequest:function(){ $("ajax").set("html","WAITING FOR ANSWER..."); },//onRequest
    		onProress:function(event, xhr){ $("ajax").set("html", event.total); },
    		onSuccess:function(txt, xml){
    			var root = xml.documentElement;
    			imgs = root.getElementsByTagName("img");
    			num = Math.round( Math.random() * imgs.length );
    			while(num==numR){ num = (num+1)%imgs.length; }
    			numR = num;
    			img = (Browser.Engine.trident)? imgs[num].text : imgs[num].textContent;
    			$("ajax").set("html", "OK - "+root.getElementsByTagName("img").length+" - "+img+" - "+numR);
    			$("box_show").setStyle("background-image", "url(imgs/"+img+")");
    			
    			imgs = img;
    		},
    		onFailure:function(){ $("ajax").set("html","ERROR"); }
    	}).send(null);
    	
    }
    
    show(imgs);
    
    $("uc").set("html",imgs);	
    });//END "domready"
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Mi sembra che stai facendo un po' di confusione... cosi si fa fatica a seguirti, è solo un esempio quello che hai postato? perche se quello che devi fare è presentare nel div la risposta ajax ti basta fare cosi:

    codice:
    window.addEvent("domready", function(){
    
    function show(){	
    	new Request({
    		url:"js/imgs.xml",
    		update:$("ajax"),
    		onRequest:function(){ $("ajax").set("html","WAITING FOR ANSWER..."); },//onRequest
    		onProress:function(event, xhr){ $("ajax").set("html", event.total); },
    		onSuccess:function(txt, xml){
    			
    			var root = xml.documentElement;
    			imgs = root.getElementsByTagName("img");
    			img = (Browser.Engine.trident)? imgs[num].text : imgs[num].textContent;
    			$("ajax").set("html", "OK - "+root.getElementsByTagName("img").length+" - "+img);
    $("divTest").set("html", img);
    		},
    		onFailure:function(){ $("ajax").set("html","ERROR"); }
    	}).send(null);
    }
    	
    show();
    
    )};//END "domready"
    Se invece il codice corretto era quello di prima ti basta fare cosi:

    codice:
    window.addEvent("domready", function(){
    
    function show(num){	
    var img;
    	new Request({
    		url:"js/imgs.xml",
    		update:$("ajax"),
    		onRequest:function(){ $("ajax").set("html","WAITING FOR ANSWER..."); },//onRequest
    		onProress:function(event, xhr){ $("ajax").set("html", event.total); },
    		onSuccess:function(txt, xml){
    			
    			var root = xml.documentElement;
    			imgs = root.getElementsByTagName("img");
    			img = (Browser.Engine.trident)? imgs[num].text : imgs[num].textContent;
    			$("ajax").set("html", "OK - "+root.getElementsByTagName("img").length+" - "+img);
    		},
    		onFailure:function(){ $("ajax").set("html","ERROR"); }
    	}).send(null);
    return img ;
    }
    	
    function show_img(){
    	num = Math.round( (Math.random()*4) );
    	var imgpath = show(num);
    	$("box_show").setStyle("background-image", "url(imgs/"+imgpath+")");
    }	
    
    show_img();
    
    )};//END "domready"

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma insomma, la variabile qual'e'? imgs o globale?

    Inoltre se usi lo stesso nome in questo modo:

    function show(imgs){
    ...
    ...
    imgs = img;
    ...
    }

    stai ridefinendo una variabile imgs locale alla funzione e qualunque valore ci metti non influenzera' il valore della variabile globale imgs definita altrove.

    Usa un pochino di fantasia nei nomi
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    "Vindav" grazie per l'impegno, ma quello che devo visualizzare lo visualizzo, funziona tutto, tranne che mi servirebbe fruire di alcune informazioni estrapolate dalla richiesta, all'esterno della funzione "show()" , ad esempio nella variabile "imgs" o "globale".
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  9. #9
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    "br1" (globale) era un esempio per capire come e dove mettere una variabile globale.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  10. #10
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Cmq avendo pensato anche io a quell'errore ho levato l parametro dalla funzione "show()", che si presenta come ha illustrato "Vindav" nel PRIMO esempio.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.