Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Passaggio variabili di tipo get ...
Forum - Javascript - Passaggio variabili di tipo get ...

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 13:04
Lunedì, 11/03/2013
Salve ragazzi, ho un piccolo problema riguardo quanto segue. In pratica ho una funzione del tipo
Codice sorgente - presumibilmente Javascript

  1. <script type="text/javascript" language="javascript">
  2.                   function visualizza(id){
  3.                         if (document.getElementById){
  4.                           if(document.getElementById(id).style.display == 'none'){
  5.                                 document.getElementById(id).style.display = 'block';
  6.                           }else{
  7.                                 document.getElementById(id).style.display = 'none';
  8.                           }
  9.                         }
  10.                   }
  11.                 </script>



che apre un div attraverso un link del tipo

Codice sorgente - presumibilmente Javascript

  1. <a href="#" onclick="visualizza('div_id'); return false" >Apri-Chiudi</a>



e fin qui nessun problema. Ora però vorrei che ci fosse un passaggio di parametro tramite get. Facendo un esempio

Codice sorgente - presumibilmente Javascript

  1. <a href="#?var=1" onclick="visualizza('div_id'); return false" >Apri-Chiudi</a>



Il problema è che nel momento in cui faccio una echo $_GET, questa non mi stampa il valore della variabile var.
In altre parole vorrei aprire un div attraverso la funzione visualizza('div_id') e far passare la variabile $_GET (ovviamente la pagina principale non deve aggiornarsi, altrimenti il div si chiuderebbe). 8-|

Spero di essere stato chiaro.

PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 13:43
Lunedì, 11/03/2013
Il codice PHP viene eseguito soltanto dal server prima di inviarti la pagina, quindi è necessario riceverla di nuovo per eseguire "echo $_GET".
Puoi ottenere però i parametri GET tramite la stringa Javascript "document.location.search".
Se spieghi meglio cosa hai intenzione di fare, magari si può trovare una soluzione più adatta.

PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 13:47
Lunedì, 11/03/2013
Se gestisci l'evento click via Javascript & non fai ricaricare la pagina non vedo come PHP entri nella faccenda
Se vuoi passare un valore alla funzione visualizza passalo come secondo parametro
Se lo vuoi passare invece al server bisogna che o ricarichi la pagina o fai una chiamata AJAX (googola)

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 14:33
Lunedì, 11/03/2013
Allora premetto che sono alle prime armi con javascript, quindi perdonate ogni mia ignoranza a riguardo, visto che fino ad ora ho programmato in php. Comunque tornando al problema:

Ho due query mysql, di cui
q_a (id_a, nome_a) e
q_b(id_b, nome_b, id_a)

Attraverso una lettura della query q_a estraggo un elenco di nome_a linkabile. Ad es.

Codice sorgente - presumibilmente Plain Text

  1. <a href='?id_a=1'>nome_a1</a>
  2. <a href='?id_a=2'>nome_a2</a>
  3. ecc...



Ora vorrei che al click della stringa nome_a1 si aprisse un div in basso. Il quale div una volta aperto recupera il valore di id_a e faccia in base ad esso una seconda lettura sulla query q_b, quindi ne stampa i risultati nome_b1, nome_b2, nome_b3, ecc..
La mia domanda è: come posso recuperare il parametro id_a??

Spero di essere stato chiaro, anche perché non saprei più come spiegarmi.

Ringranzio tutti per l'attenzione

PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 15:05
Lunedì, 11/03/2013
Intanto, puoi leggere tutto in una volta ed evitare tutto ciò.
Se questo risulta pesante:
- Per evitare di leggere il parametro GET dall'URL puoi far scrivere al codice PHP che prende i dati dalla query uno script Javascript nella pagina che salva id_a anche in una variabile Javascript.
- O ancora meglio, scrivere il codice HTML di un iframe con uno script PHP che carica il contenuto della div.
- Se proprio vuoi fare in quel modo, puoi ottenere id_a tramite window.location.search, come ti ho detto prima.
- Una volta ottenuto id_a puoi usare XMLHttpRequest per ottenere il contenuto della div senza ricaricare la pagina.
- Se questo non è un problema, allora puoi ricaricare la pagina passandogli però un altro GET in cui dici quale div è stata aperta.

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 16:02
Lunedì, 11/03/2013
Allora vorrei applicare questa metodologia
"- Se proprio vuoi fare in quel modo, puoi ottenere id_a tramite window.location.search, come ti ho detto prima.
- Una volta ottenuto id_a puoi usare XMLHttpRequest per ottenere il contenuto della div senza ricaricare la pagina. "

Facendo una breve ricerca ho trovato quanto segue
Codice sorgente - presumibilmente Javascript

  1. <script language="javascript">
  2.  var querystring = location.search;
  3. </script>



Quindi il link sarà (dove visualizza() è la funzione che visualizza il div
Codice sorgente - presumibilmente Javascript

  1. <a href='page.php?id=1' onclick="visualizza('div_id'); return false" > nome_a1 </a>



Per poi fare
Codice sorgente - presumibilmente Javascript

  1. <script language="javascript">
  2. if (querystring == "?id=1") {
  3. document.write("id_a1 = 1");
  4. }
  5. else {
  6.  
  7. document.write("Nussun id");
  8. }
  9. </script>



Come mai non recupera nulla???
Mi daresti delle dritte a riguardo? Un esempio sarebbe ben gradito.
Grazie ancora.


PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 16:24
Lunedì, 11/03/2013
Intanto, col primo codice stai creando un'inutile copia che rimane costante. Quando cliccherai un link, il valore di querystring rimarrà lo stesso.
Poi, non è una buona idea usare location.search in quel modo, visto che potrebbe contenere anche altra roba. Per ottenere una certa parte, puoi usare le espressioni regolari, ma non capisco perché vuoi usare location.search se esistono metodi migliori.
Comunque, per ottenere id e visualizzare:
Codice sorgente - presumibilmente Javascript

  1. var res = /[?&]id=([0-9]+)($|&)/.exec(document.location.search);
  2. if (res) {
  3.         visualizza(res[1]);
  4. }



Su visualizza() metti il codice con XMLHttpRequest.

Comunque, stai mischiando un po' le soluzioni che ti ho dato, queste erano delle soluzioni separate. Se mi spieghi meglio cosa vuoi fare (perché ancora ci ho capito poco), posso spiegarti quella più adatta. Se semplicemente vuoi fare in modo che cliccando "Tizio 1", si apra il div 1 con un certo contenuto da caricare, non c'è bisogno di tutto questo casino con GET, variabili impostate dal PHP ecc.

Ultima modifica effettuata da ZioCrocifisso il 11/03/2013 alle 16:31
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 16:31
Lunedì, 11/03/2013
Ho risolto così

Codice sorgente - presumibilmente Javascript

  1. <script type="text/javascript">
  2. function apriLink(url)
  3. {
  4.  $('.elenco').load(url);
  5. }
  6. </script>
  7.  
  8. <a href="javascript:apriLink('results.php?id=1')" >mostra</a>
  9.  
  10. <div class="elenco"></div>



Ora però vorrei che il div "elenco" comparisse al click del link mostra.
Ho provato ad integrare questo script
Codice sorgente - presumibilmente Javascript

  1. <script type="text/javascript" language="javascript">
  2.       function visualizza(id){
  3.         if (document.getElementById){
  4.           if(document.getElementById(id).style.display == 'none'){
  5.             document.getElementById(id).style.display = 'block';
  6.           }else{
  7.             document.getElementById(id).style.display = 'none';
  8.           }
  9.         }
  10.       }
  11.     </script>
  12.  
  13. <a href="javascript:apriLink('results.php?id=1')" onclick="visualizza('elenco'); return false" >mostra</a>
  14.  
  15. <div class="elenco" style="display: none"></div>


Ma non va. Soluzioni a riguardo?
Grazie mille.


PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 16:35
Lunedì, 11/03/2013
href="javascript:... e onclick=... fanno la stessa cosa. Perché stai usando due funzioni?
Poi, non dovresti usare l'attributo class, se lo stai usando per identificare i vari div. Usa l'attributo id visto che dev'essere univoco, e che stai usando getElementById (se vuoi usare le classi devi usare getElementsByClassName, ma non ha senso).
Insomma, non capisco questi cambiamenti inutili. Se ciò che vuoi fare è quello che ho detto sopra, posso farti un esempio.

Ultima modifica effettuata da ZioCrocifisso il 11/03/2013 alle 16:36
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo