Kirish Ro'yxatdan o'tish
Ajax (programming) nima va qanday ishlaydi: fetch, XMLHttpRequest va misollar

Ajax (programming) nima va qanday ishlaydi: fetch, XMLHttpRequest va misollar

Ajax (programming) sahifani qayta yuklamasdan serverdan ma’lumot olish va yuborish imkonini beradi. fetch/XMLHttpRequest, JSON, status kodlar va qachon kerakligi.

Ajax — bu brauzer va server o‘rtasida ma’lumotni sahifani qayta yuklamasdan olish yoki yuborish imkonini beradigan yondashuv. U “AJAX” atamasi turli texnologiyalar kombinatsiyasini anglatadi: odatda XMLHttpRequest yoki zamonaviy fetch, JavaScript va server javobi (odatda JSON).

Quyida Ajax nima ekanini, qayerdan kelganini, qanday ishlashini va uni amalda qachon hamda qanday tanlash kerakligini aniq texnik misollar bilan tushuntiraman.

Ajax nima: aniq ta’rif va tarkibiy qismlar

Ajax (Asynchronous JavaScript and XML) — sahifa fonida so‘rov yuborib, serverdan javobni JavaScript orqali qayta ishlash usuli. Sahifa to‘liq qayta yuklanmaydi, foydalanuvchi esa jarayon tugashini kutmasdan ishlashda davom etadi.

Ajaxning “XML” qismi tarixiy nomdan qolgan: bugun amaliyotda javob ko‘pincha XML emas, JSON bo‘ladi. Asosiy g‘oya — asinxron so‘rov va qisman yangilash.

  • Frontend: JavaScript (DOMni yangilash uchun)
  • Transport: Brauzerdagi so‘rov mexanizmi (XMLHttpRequest yoki fetch)
  • Format: Ko‘pincha JSON (kamdan-kam holatda XML)
  • Backend: Ajax so‘roviga javob beradigan HTTP endpoint

Tarix va kontekst: nima uchun paydo bo‘lgan

Ajax yondashuvi 2000-yillar boshida veb-interfeyslar (desktopga o‘xshash) tajribasiga ehtiyoj kuchayishi bilan ommalashdi. O‘sha davrda klassik “submit → sahifa qayta yuklanishi” modeli foydalanuvchi uchun noqulay bo‘lib qolgan edi.

“Asinxron” g‘oyasi alohida texnologiya sifatida oldinroq ham mavjud bo‘lgan, ammo 2005–2006 yillarda brauzerlar va JavaScript imkoniyatlari yetarli darajaga yetib, yondashuv keng tarqaldi. Ajax nomi esa 2005-yilda ommaviy maqolalar bilan mashhur bo‘ldi (termin sifatida “XML” ishlatilgani bo‘lsa ham, keyinchalik JSON amalda ko‘proq uchray boshladi).

  • Oldin: har bir o‘zgarish uchun sahifa to‘liq yangilanishi
  • Keyin: so‘rov asinxron ketadi, faqat kerakli qism yangilanadi
  • Nega: tezkorroq UX, tarmoq va renderni optimallashtirish imkoniyati

Isitish mexanizmi: Ajax qanday ishlaydi (qadam-baqadam)

Ajax ishlashi odatda quyidagi ketma-ketlikka ega: foydalanuvchi hodisa (masalan, tugmani bosish) ni yuzaga keltiradi, brauzer JavaScript orqali serverga so‘rov yuboradi, server javob beradi va JavaScript DOMni yangilaydi.

Quyidagi bosqichlar Ajaxning “mexanika” qismini aniq ko‘rsatadi:

  1. Foydalanuvchi interfeys bilan o‘zaro ta’sir qiladi (input, filtr, tugma).
  2. JavaScript kerakli ma’lumotni tayyorlaydi (masalan, qidiruv matni).
  3. Brauzer HTTP so‘rov yuboradi: GET yoki POST. Bu so‘rov odatda fetch yoki XMLHttpRequest bilan qilinadi.
  4. Server endpoint so‘rovni qabul qiladi, kerakli hisob-kitob yoki DB so‘rovini bajaradi va javobni qaytaradi.
  5. JavaScript javobni qabul qilib, status kodini va formatni tekshiradi (masalan, JSON parse).
  6. Faqat kerakli DOM elementlar yangilanadi (masalan, jadval qatori, xabar matni, holat indikatorlari).
  7. Asinxron bo‘lgani uchun sahifaning qolgan qismi o‘zgarishsiz qoladi.

fetch bilan tipik oqim

Aksariyat loyihalarda Ajax amalda fetch orqali yoziladi. Quyidagi tuzilma “so‘rov → javob → DOMni yangilash” g‘oyasini ko‘rsatadi.

fetch('/api/search?q=...') javob oladi, keyin response.json() bilan JSONni o‘qib, natijani ma’lum bir elementga joylaydi.

Status kodlar bilan ishlash (amaliy va tekshiriladigan narsa)

Ajax’da odatiy xato — server 400/500 qaytargan bo‘lsa ham UI’ni “muvaffaqiyat” deb yangilash. Shuning uchun javobning status va ok xususiyatini tekshirish muhim.

  • 200–299: muvaffaqiyatli javob
  • 400: noto‘g‘ri so‘rov (validatsiya xatosi)
  • 401/403: autentifikatsiya yoki ruxsat bilan bog‘liq muammo
  • 404: endpoint topilmadi
  • 500: server ichki xatosi

Ajax qachon kerak: UI komponentlar va real misollar

Ajax ko‘pincha sahifada tez-tez “qisman” yangilanish bo‘ladigan joylarda o‘zini yaxshi ko‘rsatadi. Maqsad — keraksiz qayta render va sahifa reload’ini kamaytirish.

Quyidagi holatlar Ajax uchun tipik:

  • Avtotugallash (autocomplete): foydalanuvchi yozadi, ro‘yxat serverdan keladi
  • Qidiruv: qidiruv natijalari darhol yangilanadi
  • Filtr va saralash: jadval faqat kerakli qismni yangilaydi
  • Hisob-kitob: forma kiritishiga qarab narx yoki chegirma hisoblanadi
  • Holat yangilanishi: “buyurtma qabul qilindi” kabi xabarlarni server tasdiqlaydi

Alternativalar bilan taqqoslash: Ajax vs. to‘liq reload vs. WebSocket

Ajax serverdan so‘rov olib, javobni qayta ishlaydi. Lekin real vaqtda (real-time) yangilanishlar kerak bo‘lsa, boshqa yondashuvlar mosroq bo‘lishi mumkin. Quyida taqqoslash keltiriladi.

Yondashuv Qanday ishlaydi Qachon mos Asosiy cheklov
Ajax (HTTP so‘rovlar) UI hodisasiga javoban so‘rov → javob → qisman yangilash Qidiruv, filtr, forma validatsiyasi, qisman render Serverdan “push” qilish doimiy kanali yo‘q (odatda talab bo‘yicha so‘raladi)
To‘liq reload (klassik forma) Submit → butun sahifa qayta yuklanadi Oddiy oqimlar, murakkab UX shart emas Foydalanuvchi tajribasi sekinroq, render ko‘proq xarajat
WebSocket Doimiy ulanish → server va mijoz real vaqtda xabar almashadi Chat, narxlar jadvali kabi uzluksiz yangilanish Arxitektura va xavfsizlik boshqaruvi murakkabroq

Shuni aniq ajrating: Ajax — “talab bo‘yicha so‘rov” modeli; WebSocket esa “doimiy kanal” modeli.

Amaliy sozlash va tipik xatolar

Ajax’dan samarali foydalanish uchun endpoint dizayni, javob formati va xatolarni qayta ishlash oldindan rejalashtiriladi. Aks holda UI tezkor bo‘lsa ham, natijalar noto‘g‘ri ko‘rsatilishi mumkin.

Quyidagi amaliy tekshiruvlar loyihada darhol foyda beradi.

1) Endpoint va metodni aniq ajrating

  • GET: faqat ma’lumot olish (masalan, qidiruv natijasi)
  • POST: server holatini o‘zgartirish (masalan, buyurtma yuborish)

Bu ajratish REST dizaynida ham to‘g‘ri ishlaydi va server logikasini bashoratli qiladi.

2) JSON formatini bir xil qiling

UI tomoni JSON kutsa, server ham JSON qaytarishi kerak. Tipik amaliy odat — javob strukturasida success yoki data, hamda xatoda error bo‘lishi.

Masalan, qidiruv endpoint faqat ro‘yxat qaytarsa ham bo‘ladi, lekin xatolar uchun aniq tuzilma belgilansh kerak.

3) UI “loading” holatini boshqaring

Ajax so‘rov ketayotgan paytda foydalanuvchi yana bosib yubormasligi uchun tugmani o‘chirish yoki indikator ko‘rsatish kerak. Aks holda bir nechta so‘rov ketib, oxirgi javob kechroq bo‘lib, noto‘g‘ri natija chiqarishi mumkin.

4) Concurrent so‘rovlar bilan ishlash

Avtotugallash yoki qidiruvda foydalanuvchi tez yozsa, bir necha so‘rov parallel ketadi. Eng sodda yechim — so‘rovlarni tartiblash (masalan, so‘rov raqamini saqlab, faqat oxirgisi natijasini ko‘rsatish) yoki bekor qilish imkonidan foydalanish.

5) CORS va autentifikatsiya tekshiruvi

Agar frontend alohida domen/portda ishlasa, brauzer so‘rovni CORS siyosati bo‘yicha bloklashi mumkin. Bundan tashqari, autentifikatsiya (sessiya yoki token) Ajax so‘rovlarga ham to‘g‘ri uzatilishi shart.

FAQ

Ajax va “fetch” o‘rtasida farq bormi?

Ha. Ajax — yondashuv/ulanish uslubi (asinxron so‘rov va qisman yangilash). fetch esa Ajaxni amalga oshirishda ishlatiladigan vositalardan biri; ya’ni fetch — Ajax bajarilish mexanizmlaridan.

Ajax doim sahifani qayta yuklamaydimi?

Amalda ha, maqsadi — sahifani to‘liq reload qilmaslik. Lekin dasturchi qaysidir xatda (masalan, navigatsiya) reload yoki sahifa o‘zgarishini qo‘zg‘atishi mumkin. To‘g‘ri yozilsa, qisman yangilash bo‘ladi.

Server javobi XML bo‘lishi shartmi?

Yo‘q. Ajax nomida “XML” bo‘lsa ham, bugungi kunda ko‘pincha JSON ishlatiladi. Muhim narsa — frontend kutayotgan formatga mos kelishi va brauzer tomonidan to‘g‘ri parse qilinishi.

Ajax xavfsizmi? Qaysi masalalarga e’tibor berish kerak?

Ajaxning o‘zi xavfsizlik emas, faqat transport/ulanish usuli. Xavfsizlik serverda ham, frontendda ham ta’minlanadi: autentifikatsiya tekshiruvi, ruxsat (avtorizatsiya), kiritma validatsiyasi va CSRF/XSSga qarshi himoyalar. TLS (HTTPS)dan foydalanish ham amaliy zarurat.

Qanday hollarda Ajax o‘rniga WebSocket tanlanadi?

Agar serverdan mijozga tez-tez, uzluksiz yoki real vaqtda xabarlar kerak bo‘lsa (chat, ticker), WebSocket mosroq. Ajax esa “foydalanuvchi hodisasidan keyin so‘rov → javob” ssenariylarda qulay.

Ajaxni implementatsiya qilish qanchalik murakkab?

O‘rtacha. Eng asosiy qism — endpoint yaratish, formatni kelishish (odatda JSON), status kodlarni to‘g‘ri ishlash va UI’da loading/xatoni ko‘rsatish. Murakkablik avvalgi holatlarda oshadi: parallel so‘rovlar, real-time talablar, murakkab validatsiyalar.

Xulosa

Ajax — sahifani to‘liq qayta yuklamasdan ma’lumot olish/yuborish orqali interfeysni tez va qulay qilishga xizmat qiladigan asinxron yondashuv. U HTTP so‘rov, server javob va JavaScript orqali DOMni qisman yangilash tamoyillariga tayanadi.

To‘g‘ri ishlashi uchun endpoint metodini ajrating, javob formatini (masalan, JSON) bir xil tuting, status kodlarni tekshiring va parallel so‘rovlar holatini rejalang. Shunda Ajax “oddiy qulaylik”dan ko‘ra, aniq UX va samaradorlik natijasini beradi.