AJAX - XMLHttpRequest

XMLHttpRequest یک شیء داخلی در جاوااسکریپت است که به کمک آن می‌توانیم داده‌ها را از سرور دریافت یا به سرور ارسال کنیم بدون اینکه صفحه رفرش شود.

🔹 1. ساخت شیء XMLHttpRequest

let xhttp = new XMLHttpRequest();

📌 این شیء برای تمام ارتباطات AJAX استفاده می‌شود.

🔹 2. مراحل استفاده از XMLHttpRequest

  1. ایجاد شیء

    let xhttp = new XMLHttpRequest();
  2. تعریف تابع callback برای پردازش پاسخ

    xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerText = this.responseText; } };
  3. باز کردن درخواست

    xhttp.open("GET", "data.txt", true);
  4. ارسال درخواست

    xhttp.send();

🔹 3. وضعیت‌های readyState

مقدارتوضیح
0شیء ساخته شده ولی هنوز تنظیم نشده
1اتصال برقرار شده (open() فراخوانی شده)
2درخواست دریافت شده
3در حال پردازش درخواست
4پاسخ آماده است

🔹 4. کد وضعیت HTTP (status)

  • 200 → موفق

  • 404 → منبع پیدا نشد

  • 500 → خطای سرور

📌 همیشه چک کنید:

if (this.readyState == 4 && this.status == 200) { // پاسخ آماده و موفق }

🔹 5. مثال کامل (GET Request)

let xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerText = this.responseText; } }; xhttp.open("GET", "data.txt", true); xhttp.send();

🔹 6. مثال (POST Request)

let xhttp = new XMLHttpRequest(); xhttp.open("POST", "submit.php", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { console.log(this.responseText); } }; xhttp.send("name=Ali&age=25");

🔹 7. انواع پاسخ‌ها

  • responseText → متن ساده یا JSON

  • responseXML → سند XML

✅ خلاصه

  • شیء اصلی AJAX → XMLHttpRequest

  • مراحل: open()send() → پردازش پاسخ

  • حالت‌ها با readyState کنترل می‌شوند

  • وضعیت پاسخ با status بررسی می‌شود

  • می‌توان داده را با GET یا POST ارسال کرد