AJAX so‘rov yuborish
XMLHttpRequest obyekti serverdan ma’lumotlarni so‘rash uchun ishlatiladi.
Serverga so‘rov yuborish
Serverga so‘rov yuborish uchun biz XMLHttpRequest Obyektning open() va send() usullaridan foydalanamiz:
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
| Metod | Tavsif |
|---|---|
| open(method, url, async) | So‘rov usuli turini belgilaydi: so‘rov turi: GET yoki POST url: server (fayl) joylashuvi asinxron: rost (asinxron) yoki noto‘g‘ri (sinxron) |
| send() | So‘rovni serverga yuboradi (GET uchun ishlatiladi) |
| send(string) | So‘rovni serverga yuboradi (POST uchun ishlatiladi) |
url - serverdagi fayl
open() usulining url parametri serverdagi fayl manzilidir:
xhttp.open("GET", "ajax_test.asp", true);
Fayl istalgan turdagi fayl bo‘lishi mumkin: .txt va .xml kabi yoki .asp va .php kabi server skript fayllari (ular javobni qaytarib yuborishdan oldin serverda amallar bajarishi mumkin).
Asinxron - true yoki false?
Server so‘rovlari asinxron tarzda yuborilishi kerak.
open() usulining async parametri rost ga o‘rnatilishi kerak:
xhttp.open("GET", "ajax_test.asp", true);
Asinxron yuborish orqali JavaScript server javobini kutishi shart emas, aksincha:
- server javobini kutish vaqtida boshqa skriptlarni bajarish
- javob tayyor bo‘lgandan keyin javob bilan shug‘ullanish
async parametrining standart qiymati async = true.
Uchinchi parametrni kodingizdan xavfsiz olib tashlashingiz mumkin.
Sinxron XMLHttpRequest (async = false) tavsiya etilmaydi, chunki server javobi tayyor bo‘lguncha JavaScript bajarilishi to‘xtab qoladi. Agar server band yoki sekin bo‘lsa, ilova qotib qoladi yoki to‘xtaydi.
GET or POST?
GET POST ga qaraganda sodda va tezroq va ko‘p hollarda foydalanish mumkin.
Biroq, har doim POST so‘rovlaridan foydalaning:
- Keshlangan fayldan foydalanib bo‘lmasa (serverdagi fayl yoki ma’lumotlar bazasi yangilanayotganda).
- Serverga katta hajmdagi ma’lumot yuborilayotganda (POST’da hajm cheklovi yo‘q).
- Foydalanuvchi ma’lumotlarini yuborish (u noma’lum belgilarni o‘z ichiga olishi mumkin), POST GETga qaraganda mustahkamroq va xavfsizroq.
GET so‘rovlari
A simple GET request:
Yuqoridagi misolda siz keshlangan natijani olishingiz mumkin. Bunga yo‘l qo‘ymaslik uchun URL manziliga noyob identifikator qo‘shing:
Agar siz ma’lumotni GET usuli bilan yubormoqchi bo‘lsangiz, ma’lumotni URL manziliga qo‘shing:
Misol
xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();
O‘zingiz sinab ko‘ring »
Server kirishdan qanday foydalanishi va server so‘rovga qanday javob berishi keyingi bobda tushuntiriladi.
POST so‘rovlari
A simple POST request:
HTML formasi kabi ma’lumotlarni POST qilish uchun setRequestHeader() bilan HTTP sarlavhasini qo‘shing.
send() usulida jo‘natmoqchi bo‘lgan ma’lumotlarni belgilang:
Misol
xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
O‘zingiz sinab ko‘ring »
| Metod | Tavsif |
|---|---|
| setRequestHeader(header, value) | So‘rov sarlavhasiga HTTP sarlavhalarini qo‘shadi: sarlavha nomi qiymatini belgilaydi: sarlavha qiymatini belgilaydi |
Sinxron so‘rov
Sinxron so‘rovni bajarish uchun open() usulidagi uchinchi parametrni false ga o‘zgartiring:
xhttp.open("GET", "ajax_info.txt", false);
Ba’zan tezkor sinov uchun async = false ishlatiladi. Sinxron so‘rovlarni eski JavaScript kodlarida ham uchratasiz.
Kod server tugashini kutganligi sababli, onreadystatechange kerak emas.
funksiya:
Misol
xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
O‘zingiz sinab ko‘ring »
Sinxron XMLHttpRequest (async = false) tavsiya etilmaydi, chunki server javobi tayyor bo‘lguncha JavaScript bajarilishi to‘xtab qoladi. Agar server band yoki sekin bo‘lsa, ilova qotib qoladi yoki to‘xtaydi.
Zamonaviy ishlab chiquvchilar vositalari sinxron so‘rovlardan foydalanish haqida ogohlantirishga da’vat etiladi va bu sodir bo‘lganda InvalidAccessError istisnosini keltirib chiqarishi mumkin.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
