Skip to content

AJAX — Serverga so'rov yuborish

XMLHttpRequest obyekti serverdan ma'lumot so'rash uchun ishlatiladi.


Serverga so'rov yuborish

Serverga so'rov yuborish uchun biz XMLHttpRequest obyektining open() va send() metodlaridan foydalanamiz:

js
xhttp.open('GET', 'ajax_info.txt', true)
xhttp.send()
MetodTavsif
open(method, url, async)So'rov turini belgilaydi
method: so'rov turi GET yoki POST
url: serverdagi fayl manzili
async: asinxron (true) yoki sinxron (false)
send()So'rovni serverga yuboradi (GET uchun ishlatiladi)
send(string)So'rovni serverga yuboradi (POST uchun ishlatiladi)

URL — Serverdagi fayl

open() metodining url parametri serverdagi fayl manzili hisoblanadi:

js
xhttp.open('GET', 'ajax_test.asp', true)

Fayl istalgan turdagi bo'lishi mumkin, masalan .txt va .xml, yoki server skript fayllari, masalan .asp va .php (bular javob qaytarishdan oldin serverda amallar bajarishi mumkin).


Asinxron — True yoki False?

Server so'rovlari asinxron tarzda yuborilishi kerak. open() metodining async parametri true qilib o'rnatilishi lozim:

js
xhttp.open('GET', 'ajax_test.asp', true)

Asinxron yuborish orqali JavaScript server javobini kutib o'tirmaydi, balki uning o'rniga:

  • Server javobini kutayotganda boshqa skriptlarni bajarishi;
  • Javob tayyor bo'lgandan keyin u bilan ishlashi mumkin.

Diqqat!

async parametrining standart qiymati true hisoblanadi. Siz ushbu uchinchi parametrni kodingizdan xavfsiz olib tashlashingiz mumkin. Sinxron XMLHttpRequest (async = false) tavsiya etilmaydi, chunki server javobi tayyor bo'lgunga qadar JavaScript kodini bajarishdan to'xtaydi. Agar server band yoki sekin bo'lsa, ilova qotib qolishi (hang) mumkin.


GET yoki POST?

GET metodi POST-ga qaraganda soddaroq va tezroq bo'lib, ko'p hollarda undan foydalanish mumkin. Biroq, quyidagi hollarda har doim POST so'rovlaridan foydalaning:

  • Keshlanadigan fayl varianti mos kelmasa (serverdagi fayl yoki ma'lumotlar bazasini yangilash kerak bo'lganda).
  • Serverga katta hajmdagi ma'lumotlarni yuborish kerak bo'lganda (POST-da hajm cheklovi yo'q).
  • Foydalanuvchi ma'lumotlarini (noma'lum belgilarni o'z ichiga olishi mumkin bo'lgan) yuborganda; POST GET-ga qaraganda mustahkamroq va xavfsizroqdir.

GET so'rovlari

Oddiy GET so'roviga misol:

js
xhttp.open('GET', 'demo_get.asp')
xhttp.send()

Yuqoridagi misolda keshlangangan (cached) natijani olishingiz mumkin. Buni oldini olish uchun URL-ga noyob ID qo'shing:

js
xhttp.open('GET', 'demo_get.asp?t=' + Math.random())
xhttp.send()

Agar siz GET metodi bilan ma'lumot yubormoqchi bo'lsangiz, ma'lumotlarni URL-ga qo'shing:

js
xhttp.open('GET', 'demo_get2.asp?fname=Henry&lname=Ford')
xhttp.send()

POST so'rovlari

Oddiy POST so'roviga misol:

js
xhttp.open('POST', 'demo_post.asp')
xhttp.send()

Ma'lumotlarni HTML formasi kabi yuborish uchun setRequestHeader() yordamida HTTP sarlavhasini qo'shing. Yubormoqchi bo'lgan ma'lumotlaringizni send() metodida ko'rsating:

js
xhttp.open('POST', 'ajax_test.asp')
xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhttp.send('fname=Henry&lname=Ford')
MetodTavsif
setRequestHeader(header, value)So'rovga HTTP sarlavhalarini qo'shadi
header: sarlavha nomini belgilaydi
value: sarlavha qiymatini belgilaydi

Sinxron so'rov (Synchronous Request)

Sinxron so'rovni bajarish uchun open() metodidagi uchinchi parametrni false ga o'zgartiring:

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

Sinxron so'rovlar tavsiya etilmaydi va zamonaviy vositalar bunga qarshi ogohlantirishi mumkin.