menu v PHP a Ajaxe

Programovacie jazyky, rady, poradňa...
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

menu v PHP a Ajaxe

Príspevok od používateľa beluský »

cawte, ako spravit také nieco, aby sa po kliknuti na polozky menu zobrazilo "pod menu" bez reloadnutia stranky... skusal som taketo nieco, ale v Opere to vobec nejde a vo FF som to neskusal...
index.php

Kód: Vybrať všetko

<html>
<head>
  <script src="skripty.js"></script></noscript>
</head>
<body>
  <div id="menuTovar">
    <a value="1" onClick="zobrazMenu(this.value, 0)">Polozka 1</a><br />
    <a value="2" onClick="zobrazMenu(this.value, 0)">Polozka 2</a><br />
    <a value="3" onClick="zobrazMenu(this.value, 0)">Polozka 3</a><br />
  </div>
</body>
</html>
skripty.js

Kód: Vybrať všetko

var xmlHttp
///////////////////////////////////////////////////////////
function zobrazMenu(level, sub) { 
  xmlHttp = GetXmlHttpObject()
   
  if (xmlHttp == null) {
    alert ("Browser does not support HTTP Request")
    return
  }

  var url="menu.php?level="+level+"&sub="+sub
  
  xmlHttp.onreadystatechange = menu
    
  xmlHttp.open("GET",url,true)
  xmlHttp.send(null)
}
function menu() {
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
    document.getElementById("menuTovar").innerHTML = xmlHttp.responseText;
  }
}
/////////////////////////////////////////////////////////
function GetXmlHttpObject() {
  var xmlHttp=null;
  
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  } 
  catch (e) {
    //Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  
  return xmlHttp;
}
menu.php

Kód: Vybrať všetko

<?php
  $level = $_GET["level"];
  $sublevel = $_GET["sub"];
  
  $html = '<a value="1" onclick="zobrazMenu(this.value, 0)">Polozka 1</a><br />';
  
  switch($level) {
    case 1 :
              $html .= '<a value="1" onclick="zobrazMenu(1, this.value)"> sub1</a><br />
              <a value="2" onclick="zobrazMenu(1, this.value)"> sub2</a><br />
              <a value="3" onclick="zobrazMenu(1, this.value)"> sub3</a><br />';
              $html .= '<a value="2" onclick="zobrazMenu(this.value, 0)">Polozka 2</a><br />';
              $html .= '<a value="3" onclick="zobrazMenu(this.value, 0)">Polozka 3</a><br />';
      break;
      
    case 2 : 
              $html .= '<a value="2" onclick="zobrazMenu(this.value, 0)">Polozka 2</a><br />';
              $html .= '<a value="1" onclick="zobrazMenu(2, this.value)"> sub1</a><br />
              <a value="2" onclick="zobrazMenu(2, this.value)"> sub2</a><br />
              <a value="3" onclick="zobrazMenu(2, this.value)"> sub3</a><br />';
              $html .= '<a value="3" onclick="zobrazMenu(this.value, 0)">Polozka 3</a><br />';
      break;
      
    case 3 : 
              $html .= '<a value="2" onclick="zobrazMenu(this.value, 0)">Polozka 2</a><br />';
              $html .= '<a value="3" onclick="zobrazMenu(this.value, 0)">Polozka 3</a><br />';
              $html .= ' <a value="1" onclick="zobrazMenu(3, this.value)"> sub1</a><br />
              <a value="2" onclick="zobrazMenu(2, this.value)"> sub2</a><br />';
      break;
  }
  
  echo $html;
?>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

videl si niekedy, že by hypertextový odkaz mal value? Stačilo si pozreť na akú url sa posiela požiadavok, a zistil by si že hladá stránku menu.php?level=undefined&sub=0

Odkazy musíš spraviť takto:

Kód: Vybrať všetko

<a onClick="zobrazMenu(1, 0)">Polozka 1</a><br />
<a onClick="zobrazMenu(2, 0)">Polozka 2</a><br />
<a onClick="zobrazMenu(3, 0)">Polozka 3</a><br />
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

na ajax pouzi nejaky framework (xajax napr) .. tam mas aku taku zaruku ze ti to bude fungovat v prehliadacoch (nejakom urcite :) )
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

uz to funguje, vážne mu vadilo to value
Napísať odpoveď