aggiornamento div con passaggio parametri da href

  • Creatore Discussione Creatore Discussione Sirio
  • Data di inizio Data di inizio

Sirio

Nuovo Utente
17 Nov 2011
28
1
1
Buonasera a tutti,
come da oggetto, sto cercando una soluzione per aggiornare un div in base al click su un link...purtroppo non mastico molto ajax e non so come muovermi.

In poche parole, vado a creare un menù dinamicamente estrapolando da un database un elenco di categorie di prodotti e cliccando su una di queste, in un div dovrei visualizzare l'elenco dei prodotti di quella categoria.
Il link generato è composto da "macrocategoria", "categoria" e "sottocategoria"; es: view.asp?mc=1&cp=5&sc=9

Ora per visualizzare l'elenco ho provato due strade
caricare in un iframe la pagina view
visualizzare la pagina view uscendo dalla pagina con il menù

Vorrei evitare di usare gli iframe e preferirei non dover far caricare un'altra pagina.

Se utilizzassi un form, attraverso il metodo serialize non dovrei avere problemi nel passaggio dei parametri, ma da un link come li passo?

Penso che questo argomento sia già stato trattato nel forum, in tal caso chiedo scusa per non essere riuscito ad affinare bene la ricerca e non averlo trovato.

Grazie
Sirio
 
Ciao , se ho capito bene tu vorresti che quando un utente clicchi su un link del tuo menu quel menu si transformi in una lista di categorie? Se cosi , la vedo difficile con ajax, ti conviene usare iframe
 
Ciao Recalling,
grazie per la risposta; io ho già un mio menu di navigazione che si compone così...esempio

HTML:
<ul>
<li>macrocat1
<ul>
<li>cat1.1
<ul>
<li><a href="#">subcat1.1.1</a></li>
<li><a href="#">subcat1.1.2</a></li>
</ul>
</li>
</ul>
</li>
<li>macrocat2</li>
</ul>

Il tutto viene generato da delle interrogazioni al database.

Vorrei che cliccando sul link delle subcatx.y.z, in un div accanto si vedesse l'elenco dei prodotti associati alla sottocategoria scelta.
Sicuramente l'iframe è la soluzione più veloce e come accennato ho già testato, però volevo evitarli...mi sembra una tecnica un po' obsoleta e pensavo che con ajax ci potesse essere una soluzione un po' più "fresca"; certo se non si può userò i cari vecchi iframe.

Ti ringrazio nuovamente per la risposta
 
Ciao Marino,
grazie del suggerimento.
buona parte del codice presente nello zip mi è abbastanza oscuro...ma penso che quello che potrebbe fare al caso mio, riadattandolo un po', sia il codice da riga 52 a 66 e credo anche qualcosa della function GetData; giusto?

In apertura thread facevo riferimento a form e serialize...questo è il codice che uso in semplici form di richiesta informazioni
Codice:
            {
                $.ajax({
                type: "POST",
                url: "invia.asp",
                data: $("#modulo").serialize(),
                success: function(){
                $("#modulo").slideUp("fast");
                $("#suc").html("Email inviata con successo");
                $("#suc").hide();
                $("#suc").fadeIn(1500);
            },
            error: function(){
            alert("Impossibile utilizzare AJAX, riprovare più tardi...");
            }

Passando ad url i valori della querystring del menu quindi ad esempio view.asp?mc=1&cp=5&sc=9 non dovrei riuscire ad avere il risultato richiesto? Più che altro...come glieli passo i valori della qs?
 
Rettifico quanto sopra...
Credo di aver trovato la soluzione

Codice:
function loadXMLDoc(mc,cp,sc)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("text-right").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","view.asp?mc="+mc+"&cp="+cp+"&sc="+sc,true);
xmlhttp.send();
}

mentre il menù mi diventa così
Codice:
<a href="#" onclick="loadXMLDoc(<%=rs("id")%>,<%=rs1("id")%>,<%=rs2("id")%>)"><%= rs2("sub_categoria")%></a>

Funziona!!!!
Mi confermate che potrebbe essere la via giusta?
 
per evitare l'insorgere di problemi con la cache, ti suggerisco di inserire tra i parametri della get anche l'ora,
PHP:
... + "?timestamp=" + new Date().getTime() ...
non è necessario poi gestirla nello script richiamato
ciao
Marino
 
Ciao Marino,
ok provvedo ad integrare l'ora e ti ringrazio per il suggerimento; ma esattamente che problemi potrebbero insorgere?
 
in altri casi, si è verificato che si otteneva la stessa risposta dal server anche se nel frattempo la base dati era cambiata
ovvero il server non inviava i dati, dicendo al client di usare quelli in cache
(scusa se scrivo in modo un po' banale, ma giusto per farmi capire)
inserendo un parametro sicuramente variabile quale la data, non si incorre nel problema
il tutto è successo sia usando il metodo get che post
ciao
Marino
 

Discussioni simili