Skip to content

AJAX — XML Ilovalar

Ushbu bobda XML, HTTP, DOM va JavaScript-dan foydalangan holda ba'zi HTML ilovalari namoyish etiladi.


Ishlatilgan XML hujjati

Ushbu bobda biz "cd_catalog.xml" deb nomlangan XML faylidan foydalanamiz.


XML ma'lumotlarini HTML jadvalida ko'rsatish

Ushbu misol har bir <CD> elementi bo'ylab aylanib chiqadi va <ARTIST> hamda <TITLE> elementlarining qiymatlarini HTML jadvalida ko'rsatadi:

Misol

html
<table id="demo"></table>

<script>
  function loadXMLDoc() {
    const xhttp = new XMLHttpRequest()
    xhttp.onload = function () {
      const xmlDoc = xhttp.responseXML
      const cd = xmlDoc.getElementsByTagName('CD')
      myFunction(cd)
    }
    xhttp.open('GET', 'cd_catalog.xml')
    xhttp.send()
  }

  function myFunction(cd) {
    let table = '<tr><th>Artist</th><th>Title</th></tr>'
    for (let i = 0; i < cd.length; i++) {
      table +=
        '<tr><td>' +
        cd[i].getElementsByTagName('ARTIST')[0].childNodes[0].nodeValue +
        '</td><td>' +
        cd[i].getElementsByTagName('TITLE')[0].childNodes[0].nodeValue +
        '</td></tr>'
    }
    document.getElementById('demo').innerHTML = table
  }
</script>

Birinchi CD-ni HTML div elementida ko'rsatish

Ushbu misol id="showCD" bo'lgan HTML elementida birinchi CD elementini ko'rsatish funksiyasidan foydalanadi:

Misol

js
const xhttp = new XMLHttpRequest()
xhttp.onload = function () {
  const xmlDoc = xhttp.responseXML
  const cd = xmlDoc.getElementsByTagName('CD')
  myFunction(cd, 0)
}
xhttp.open('GET', 'cd_catalog.xml')
xhttp.send()

function myFunction(cd, i) {
  document.getElementById('showCD').innerHTML =
    'Artist: ' +
    cd[i].getElementsByTagName('ARTIST')[0].childNodes[0].nodeValue +
    '<br>Title: ' +
    cd[i].getElementsByTagName('TITLE')[0].childNodes[0].nodeValue +
    '<br>Yil: ' +
    cd[i].getElementsByTagName('YEAR')[0].childNodes[0].nodeValue
}

CD-lar orasida harakatlanish (Navigation)

Yuqoridagi misoldagi CD-lar orasida harakatlanish uchun next() (keyingi) va previous() (oldingi) funksiyalarini yarating:

Misol

js
function next() {
  // Agar oxirgi CD-da bo'lmasangiz, keyingisini ko'rsatish
  if (i < len - 1) {
    i++
    displayCD(i)
  }
}

function previous() {
  // Agar birinchi CD-da bo'lmasangiz, oldingisini ko'rsatish
  if (i > 0) {
    i--
    displayCD(i)
  }
}

CD ni bosganda albom ma'lumotlarini ko'rsatish

Oxirgi misol foydalanuvchi CD-ni bosganda albom ma'lumotlarini qanday ko'rsatish mumkinligini namoyish etadi:

Misol

js
function displayCD(i) {
  document.getElementById('showCD').innerHTML =
    'Artist: ' +
    cd[i].getElementsByTagName('ARTIST')[0].childNodes[0].nodeValue +
    '<br>Title: ' +
    cd[i].getElementsByTagName('TITLE')[0].childNodes[0].nodeValue +
    '<br>Yil: ' +
    cd[i].getElementsByTagName('YEAR')[0].childNodes[0].nodeValue
}