Skip to content

AJAX — XMLHttpRequest obyekti

AJAX-ning asosi XMLHttpRequest obyekti hisoblanadi.

  1. XMLHttpRequest obyektini yarating.
  2. Qayta aloqa funksiyasini (callback function) belgilang.
  3. XMLHttpRequest obyektini oching.
  4. Serverga so'rov yuboring.

XMLHttpRequest obyekti

Barcha zamonaviy brauzerlar XMLHttpRequest obyektini qo'llab-quvvatlaydi. XMLHttpRequest obyekti sahifa ortida veb-server bilan ma'lumot almashish uchun ishlatilishi mumkin. Bu butun sahifani qayta yuklamasdan, veb-sahifaning ayrim qismlarini yangilash imkonini beradi.


XMLHttpRequest obyektini yaratish

Barcha zamonaviy brauzerlar (Chrome, Firefox, IE, Edge, Safari, Opera) o'rnatilgan XMLHttpRequest obyektiga ega.

Obyektni yaratish sintaksisi:

js
variable = new XMLHttpRequest()

Qayta aloqa funksiyasini belgilash

Qayta aloqa funksiyasi (callback function) — bu boshqa funksiyaga parametr sifatida uzatiladigan funksiyadir. Bunda qayta aloqa funksiyasi javob tayyor bo'lganda bajariladigan kodni o'z ichiga olishi kerak.

js
xhttp.onload = function () {
  // Javob tayyor bo'lganda bajariladigan amal
}

So'rov yuborish

Serverga so'rov yuborish uchun XMLHttpRequest obyektining open() va send() metodlaridan foydalanishingiz mumkin:

js
xhttp.open('GET', 'ajax_info.txt')
xhttp.send()

Misol

js
// 1. XMLHttpRequest obyektini yaratish
const xhttp = new XMLHttpRequest()

// 2. Qayta aloqa funksiyasini belgilash
xhttp.onload = function () {
  // Bu yerda olingan ma'lumotlardan foydalanishingiz mumkin
  document.getElementById('demo').innerHTML = this.responseText
}

// 3. So'rovni tayyorlash va yuborish
xhttp.open('GET', 'ajax_info.txt')
xhttp.send()

Domenlararo kirish (Access Across Domains)

Xavfsizlik nuqtai nazaridan zamonaviy brauzerlar domenlararo kirishga ruxsat bermaydi. Bu shuni anglatadiki, veb-sahifa ham, u yuklamoqchi bo'lgan fayl ham bitta serverda joylashgan bo'lishi kerak.


XMLHttpRequest obyektining metodlari

MetodTavsif
new XMLHttpRequest()Yangi XMLHttpRequest obyektini yaratadi
abort()Joriy so'rovni bekor qiladi
getAllResponseHeaders()Barcha sarlavha (header) ma'lumotlarini qaytaradi
getResponseHeader()Maxsus sarlavha ma'lumotlarini qaytaradi
open(method, url, async, user, psw)So'rovni belgilaydi
method: so'rov turi GET yoki POST
url: fayl manzili
async: asinxron (true) yoki sinxron (false)
send()So'rovni serverga yuboradi (GET uchun)
send(string)So'rovni serverga yuboradi (POST uchun)
setRequestHeader()Yuboriladigan sarlavhaga yorliq/qiymat juftligini qo'shadi

XMLHttpRequest obyektining xususiyatlari

XususiyatTavsif
onloadSo'rov qabul qilinganda (yuklanganda) chaqiriladigan funksiyani belgilaydi
onreadystatechangereadyState xususiyati o'zgarganda chaqiriladigan funksiyani belgilaydi
readyStateSo'rov holatini saqlaydi:
0: so'rov ishga tushirilmadi
1: server bilan aloqa o'rnatildi
2: so'rov qabul qilindi
3: so'rov qayta ishlanmoqda
4: so'rov tugadi va javob tayyor
responseTextJavob ma'lumotlarini matn (string) sifatida qaytaradi
responseXMLJavob ma'lumotlarini XML sifatida qaytaradi
statusSo'rovning holat raqamini qaytaradi (200: "OK", 404: "Not Found")
statusTextHolat matnini qaytaradi (masalan, "OK" yoki "Not Found")

onreadystatechange xususiyati

readyState xususiyati har safar o'zgarganda onreadystatechange funksiyasi chaqiriladi. readyState 4 va status 200 bo'lganda, javob tayyor hisoblanadi:

js
xhttp.onreadystatechange = function () {
  if (this.readyState == 4 && this.status == 200) {
    document.getElementById('demo').innerHTML = this.responseText
  }
}

Eslatma

onreadystatechange hodisasi to'rt marta (1 dan 4 gacha), ya'ni readyState har safar o'zgarganda ishga tushadi.