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:
xhttp.open('GET', 'ajax_info.txt', true)
xhttp.send()| Metod | Tavsif |
|---|---|
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:
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:
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:
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:
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:
xhttp.open('GET', 'demo_get2.asp?fname=Henry&lname=Ford')
xhttp.send()POST so'rovlari
Oddiy POST so'roviga misol:
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:
xhttp.open('POST', 'ajax_test.asp')
xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhttp.send('fname=Henry&lname=Ford')| Metod | Tavsif |
|---|---|
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:
xhttp.open('GET', 'ajax_info.txt', false)Sinxron so'rovlar tavsiya etilmaydi va zamonaviy vositalar bunga qarshi ogohlantirishi mumkin.
