Avatar billede alexander_j Nybegynder
09. maj 2014 - 22:55 Der er 6 kommentarer og
1 løsning

jquery, ajax og menu med fler lag

Jeg arbejder med jquery og XML.

Min XML fil ser således ud:
<?xml version="1.0" encoding="utf-8"?>
<menu>

  <menu tekst="xmenu1" link="side1.php"/>
     
  <menu tekst="xmenu2" link="">
    <menu tekst="xmenu2.1" link="side2-1.php"/>
    <menu tekst="xmenu2.2" link="side2-2.php"/>
  </menu>

  <menu tekst="xmenu3" link="side3.php"/>

</menu>

og jeg prøver at hente data med følgende kode via jquery:
$.ajax({
  type: 'GET',
  url: 'menu.xml',
  dataType: 'xml',
  success: function(xml) {
    $(xml).find('menu').each(function(){
      alert( $(this).attr('tekst') );
    });
  },
  error: function(xml){ alert('Fejl'); }
});

Jeg havde en forventning om at den skulle vise:
xmenu1
xmenu2
xmenu3

men i stedet viser den:
xmenu1
xmenu2
xmenu2.1
xmenu2.2
xmenu3

Hvordan får jeg jquery til kun at vise niveau 1 af menu-elementerne?
Avatar billede jakobdo Ekspert
10. maj 2014 - 08:58 #1
Er XML et krav ?
Eller synes jeg du skulle overveje json.
Avatar billede alexander_j Nybegynder
10. maj 2014 - 10:46 #2
Har faktisk aldrig leget med json, men umiddelbart ligner det en slags array-opbygning. Er dette den korrekte opbygning?

var menu = [
  { "tekst":"xmenu1" , "link":"side1", {
    { "tekst":"xmenu1.1" , "link":"side1.1" },
    { "tekst":"xmenu1.2" , "link":"side1.2" }
  }},
  { "tekst":"xmneu2" , "link":"side2" },
  { "tekst":"xmenu3" , "link":"side3" }
];

Jeg kunne nu stadig godt tænke mig at vide, hvordan man gjorde med XML, selvom jeg nok bruger json, som åbenbart er det nye "sort".
Avatar billede jakobdo Ekspert
10. maj 2014 - 13:25 #3
Problemet med din nuværende xml, er alle elementer hedder menu.
Ideen er vel netop du skal dele det lidt mere op.

Se f.eks. denne måde:

<?xml version="1.0" encoding="utf-8"?>
<navigation>
  <menu tekst="xmenu1" link="side1.php"/>
  <menu tekst="xmenu2" link="">
    <submenu tekst="xmenu2.1" link="side2-1.php"/>
    <submenu tekst="xmenu2.2" link="side2-2.php"/>
  </menu>
  <menu tekst="xmenu3" link="side3.php"/>
</navigation>
Avatar billede alexander_j Nybegynder
10. maj 2014 - 14:12 #4
Det var det jeg håbede at kunne undgå, da næste led så skal hedde subsubmenu, og derefter subsubsubmenu osv.
Ved at bibeholde menu som navn, så er der mulighed for undermenuer i en uendelighed.
Avatar billede alexander_j Nybegynder
10. maj 2014 - 17:37 #5
{
  "menu": [
    { "tekst":"menu1" , "url":"side1.php" },
    { "tekst":"menu2" , "url":"#" , "submenu":[
      { "tekst":"menu2.1" , "url":"side2-1.php" },
      { "tekst":"menu2.2" , "url":"side2-1.php" }
    ]},
    { "tekst":"menu3" , "url":"side3.php" }
  ]
}

Jacobdo kom med et svar.
Avatar billede jakobdo Ekspert
11. maj 2014 - 21:30 #6
Svar!
Avatar billede jakobdo Ekspert
12. maj 2014 - 12:45 #7
Takker for point.
Så blev det json vejen alligevel? :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester