Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Passare parametri da una pag all'altra in JS: soluzione

    Per tutti quelli che hanno la necessità di inviare una variablie da una pagina ad un'altra, oppure devono inviare il nome di un'immagine ad una popup e così via... Ecco il codice dei vostri sogni. (da includere nella pagina "ricevente")

    <script>
    param_name=new Array();
    param_value=new Array();

    indirizzo=unescape(String(this.location));
    params=indirizzo.split("?");
    param=params[1].split("&");

    for(i=0;i<param.length;i++){
    param_temp=param[i].split("=");
    param_name[i]=param_temp[0];
    param_value[i]=param_temp[1];

    if(isNaN(param_value[i])) eval("var "+param_name[i]+"='"+param_value[i]+"';");
    else eval("var "+param[i]+";");
    }
    </script>

    Le variabili vanno mandate tramite l'url nella forma

    pagina.html?var1=1&var2=500,02&var3=Asia Argento&var4=ciao

    ad esempio con un link nella pagina "trasmittente" come questo

    manda i parametri

    Dopo lo script in questione, ogni variabile presente nell'URL sarà presente anche in pagina.
    Progetto ~MEPHIT~
    PHP/AJAX/HTML5 Project for D&D players
    www.mephit.it

  2. #2
    Enjoy
    Progetto ~MEPHIT~
    PHP/AJAX/HTML5 Project for D&D players
    www.mephit.it

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    bella Gwendlyn!

    forte la storia di creare delle variabili con eval :metallica

    posso mettere una soluzione pure io?
    Io mi sono fatto questa funzioncina per leggere le querystring
    codice:
    function objQueryString(qs){ 
    	dic = new Array()
    	if(!qs)	qs = location.search
    	qs = qs.replace(/\?/,'')
    	aQs = qs.split('&')
    	txt = ''
    	for(i=0;i<aQs.length;i++){
    		aPV = aQs[i].split('=')
    		dic[aPV[0]]=aPV[1]
    	}
    	return dic
    }
    da utilizzare così:
    codice:
    qs = objQueryString()
    alert(qs['NomeParametro'])
    in questo modo si possono leggere tutti i parametri passati (e i rispettivi valori) senza conoscerli a priori
    codice:
    qs = objQueryString()
    for(x in qs) 
    	document.write(x+' = '+qs[x]+'
    ')
    ecco... ho detto anche la mia

    Aloha









    p.s.
    sei de Padova centro o provincia? (patavino pure io :gren: )

  4. #4
    Ah ultima cosa: vorrei citare l'autore "ufficiale" :quipy: dello script:

    Giorgio Beggiora
    giorgiobeggiora@email.it
    Progetto ~MEPHIT~
    PHP/AJAX/HTML5 Project for D&D players
    www.mephit.it

  5. #5
    nosferatu_net
    Guest
    Mmmm...
    Butto la mia, che mi pare un po' più ordinata, anche se funzionalmente non cambia nulla. E' solo più pratico e portabile.

    L'ho usata in siti commerciali, ma visto che sono passati così tanti anni non penso di far torto a nessuno, ormai.

    Funzione 1: pescare un parametro, esattamente come in Java si scrive:
    request.getParameter("ciccio");
    codice:
    /**
     * Pesca un parametro dalla query string dell'URL
     * @param whichOne il parametro
     * @return il valore associato al parametro
     * @author Nosferatu, 1998
     */
    function getParameter(whichOne) {
      var pairs = location.search.substring(1).split('&');
      var r = "";
      var tp = new Array();
      for (var i = 0; i < pairs.length; i ++) {
        tp = pairs[i].split('=');
        if (whichOne == tp[0])
          r = unescape(tp[1].replace(/\+/g, " "));
      }
      return r;
    }

  6. #6
    nosferatu_net
    Guest
    Funzione 2:
    La lista dei parametri passati, analogamente al metodo Java:
    Enumeration request.getParameterNames()
    codice:
    /**
     * Ritorna i nomi di tutti parametri della query string
     * @return l'array contenente i nomi dei parametri
     * @author Nosferatu, 1998
     */
    function getParameterNames() {
      var ar = location.search.substring(1).split('&');
      for (var i = 0; i < ar.length; i++) {
        ar[i] = ar[i].substring(0, ar[i].indexOf('='));
      }
      return ar;
    }

  7. #7
    nosferatu_net
    Guest
    Funzione 3:
    Una feature inesistente in Java (da cui ho tratto evidente ispirazione): la querystring con cui sono entrato in pagina updatata con una nuova coppia nome-valore.
    codice:
    /**
     * Genera una nuova query string updatando il parametro passato
     * @param thePar il parametro
     * @param theValue il valore da assegnare
     * @return la stringa contenente la query string completa
     * @author Nosferatu, 1998
     */
    function setParameter(thePar, theValue) {
      var pc = "";
      var pa = getParameterNames();
      for (var i = 0; i < pa.length; i++) {
        if (pa[i] != thePar) {
          pc += "&" + pa[i] + "=" + getParameter(pa[i]);
        }
      }
      pc += "&" + thePar + "=" + escape(theValue);
      return pc.substring(1);
    }

  8. #8
    nosferatu_net
    Guest
    Concludo dicendo che secondo me è molto pericolosa la soluzione postata all'inizio, perché un qualsiasi personaggio che veda lo script può far istanziare facilmente qualsiasi oggetto alla pagina passando comodamente dalla barra dell'indirizzo, e portarla a fare cose che l'autore non aveva previsto.
    E' quasi analogo a passare le query al database direttamente in parametro nei siti dinamici.

    Aggiungo due esempi chiarificatori, per chi non ha tempo da perdere per capire come funzia il codice:
    codice:
    // semplice saluto
    alert("Ciao, " + getParameter("username"));
    
    // porto in seconda pagina di un catalogo tutte le variabili
    location = "index.html?" + setParameter("page", 2);

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    7

    Passaggio di Array?

    E se volessi passare un Array? Si può con metodo get? :quipy:

  10. #10
    nosferatu_net
    Guest
    No, non puoi né in GET né in POST.
    Con i normali form HTML puoi spedire solo stringhe.
    In aggiunta esiste il campo "FILE" ma fa tutt'altra cosa.

    In genere chi ha esigenze simili si costruisce una stringa decidendo a priori un carattere concatenatore dei vari elementi del vettore, ad esempio "5,7,3,21,6".
    Nella pagina che li riceve ci sarà il javascript per disassemblare la stringa e ricostruirsi il vettore.

    Esistono soluzioni superfiche per passare vettori e classi di ogni tipo, ad esempio i serializzatori/deserializzatori WDDX, ma qui il discorso si allargherebbe all'infinito.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.