AJAX و XML

دریافت و پردازش XML از سرور با XMLHttpRequest و fetch

AJAX چیست؟

AJAX مخفف Asynchronous JavaScript and XML است؛ تکنیکی برای دریافت داده از سرور بدون رفرش صفحه. نامش خودش گویاست: X آن یعنی XML! در اصل AJAX برای دریافت XML طراحی شد (امروزه JSON رایج‌تر است اما XML همچنان کاربرد دارد).

دریافت XML با XMLHttpRequest

const xhr = new XMLHttpRequest();
xhr.open("GET", "books.xml");

xhr.onload = function () {
    if (xhr.status === 200) {
        // responseXML: سند XML پارس‌شده آماده!
        const xmlDoc = xhr.responseXML;
        const books = xmlDoc.getElementsByTagName("book");

        for (let book of books) {
            console.log(book.getElementsByTagName("title")[0].textContent);
        }
    }
};

xhr.send();
مزیت بزرگ XMLHttpRequest برای XML، پراپرتی responseXML است که خودکار سند را پارس می‌کند — نیازی به DOMParser ندارید!

دریافت XML با fetch

API مدرن fetch پراپرتی آماده XML ندارد، اما با text() و DOMParser به‌راحتی جبران می‌شود:

const response = await fetch("books.xml");
const text = await response.text();

const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, "text/xml");

const books = xmlDoc.getElementsByTagName("book");
for (let book of books) {
    console.log(book.getElementsByTagName("title")[0].textContent);
}

مثال کامل: نمایش کتاب‌ها در جدول HTML

async function loadBooks() {
    const response = await fetch("books.xml");
    const text = await response.text();
    const xmlDoc = new DOMParser().parseFromString(text, "text/xml");

    const books = xmlDoc.getElementsByTagName("book");
    let html = "<table border='1'><tr><th>عنوان</th><th>قیمت</th></tr>";

    for (let book of books) {
        const title = book.getElementsByTagName("title")[0].textContent;
        const price = book.getElementsByTagName("price")[0].textContent;
        html += `<tr><td>${title}</td><td>${price}</td></tr>`;
    }

    html += "</table>";
    document.getElementById("output").innerHTML = html;
}

ارسال XML به سرور

const xmlData = '<order><item id="1" qty="2"/></order>';

await fetch("api.php", {
    method: "POST",
    headers: { "Content-Type": "application/xml" },
    body: xmlData
});

نکات مهم

XML یا JSON برای AJAX؟

معیارXMLJSON
حجمبیشتر (تگ‌های اضافه)کمتر
سرعت پارس در JSکندترخیلی سریع (بومی)
اعتبارسنجیDTD/Schema قویSchemaهای جداگانه
ساختار پیچیده/متادیتاقوی‌تر (ویژگی‌ها)ساده‌تر
سیستم‌های سازمانی قدیمی✅ رایجکمتر
امروزه JSON انتخاب اول وب است؛ اما وقتی با وب‌سرویس‌های سازمانی، SOAP یا سیستم‌های قدیمی کار می‌کنید، XML هنوز زبان مشترک اصلی است.

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط