AJAX - شیء XMLHttpRequest
- صفحه قبلی معرفی AJAX
- صفحه بعدی درخواست AJAX
XMLHttpRequest بنای AJAX است
- ایجاد XMLHttpRequest
- تعریف تابع بازگشتی
- XMLHttpRequest باز میشود
- درخواست به سرور ارسال میشود
XMLHttpRequest
همه مرورگرهای مدرن از آن پشتیبانی میکنند XMLHttpRequest.
XMLHttpRequest شبهافزار برای تبادل دادهها با سرور وب در پسزمینه است. این به این معناست که میتوان بخشی از محتوای وبسایت را بهروزرسانی کرد بدون اینکه کل صفحه دوباره بارگذاری شود.
ایجاد XMLHttpRequest
همه مرورگرهای مدرن (Chrome، Firefox، IE، Edge، Safari، Opera) XMLHttpRequest داخلی دارند. XMLHttpRequest.
شیوهنویسی ایجاد XMLHttpRequest:
variable = new XMLHttpRequest();
تعریف تابع بازگشتی
توابع بازگشتی توابعی هستند که به عنوان پارامتر به یک تابع دیگر منتقل میشوند.
در این حالت، تابع بازگشتی باید شامل کدهایی باشد که باید هنگام آماده شدن پاسخ اجرا شوند.
xhttp.onload = function() { // کاری که باید انجام شود زمانی که پاسخ آماده شود }
ارسال درخواست
برای ارسال درخواست به سرور میتوانید از XMLHttpRequest استفاده کنید open()
و send()
روش:
xhttp.open("GET", "ajax_info.txt"); xhttp.send();
مثال
// ایجاد XMLHttpRequest const xhttp = new XMLHttpRequest(); // تعریف تابع بازگشتی xhttp.onload = function() { // میتوانید در اینجا دادهها را استفاده کنید } // ارسال درخواست xhttp.open("GET", "ajax_info.txt"); xhttp.send();
دسترسی بین دامنهها (Access Across Domains)
به دلیل دلایل امنیتی، مرورگرهای مدرن دسترسی بین دامنهها را نمیپذیرند.
این بدان معناست که وبسایت و فایل XML که سعی در بارگذاری آن دارد باید در یک سرور باشند.
مثالهای موجود در CodeW3C.com XML فایلهای باز شده در دامنه CodeW3C.com هستند.
اگر میخواهید مثال بالا را در یکی از صفحات خود استفاده کنید، فایل XML بارگذاری شده باید در سرور خود شما باشد.
روشهای XMLHttpRequest
روش | توضیح |
---|---|
new XMLHttpRequest() | ایجاد XMLHttpRequest جدید. |
abort() | لغو درخواست فعلی. |
getAllResponseHeaders() | بازگشت اطلاعات سربرگ. |
getResponseHeader() | بازگشت اطلاعات سربرگ خاص. |
open(method, url, async, user, psw) |
تعیین درخواست.
|
send() | ارسال درخواست به سرور، برای درخواستهای GET. |
send(string) | ارسال درخواست به سرور، برای درخواستهای POST. |
setRequestHeader() | افزودن یک برچسب/مقدار به سربرگهای ارسالی. |
خصوصیات XMLHttpRequest
ویژگی | توضیح |
---|---|
onload | تعریف تابعی که هنگام دریافت (بارگذاری) درخواست فراخوانی میشود. |
onreadystatechange | تعریف تابعی که هنگام تغییر مقادیر readyState فراخوانی میشود. |
readyState |
وضعیت XMLHttpRequest را ذخیره میکند.
|
responseText | با دادههای متنی پاسخ را بازمیگرداند. |
responseXML | با دادههای متنی پاسخ را بازمیگرداند. |
وضعیت |
شماره وضعیت درخواست را بازمیگرداند
برای لیست کامل به اینجا بروید مستند مرجع پیام HTTP |
statusText | با دادههای XML پاسخ را بازمیگرداند. |
متن وضعیت را بازمیگرداند (مثلاً "OK" یا "Not Found")
ویژگی onload
برای استفاده از XMLHttpRequest، میتوانید یک تابع بازگشتی تعریف کنید که هنگام دریافت پاسخ درخواست اجرا میشود. onload
تابع را در این ویژگی تعریف کنید:
مثال
xhttp.onload = function() { document.getElementById("demo").innerHTML = this.responseText; } xhttp.open("GET", "ajax_info.txt"); xhttp.send();
تعداد تابعهای بازگشتی
اگر در وبسایت چندین وظیفه AJAX وجود دارد، باید یک تابع ایجاد کنید که XMLHttpRequest را اجرا میکند و برای هر وظیفه AJAX یک تابع بازگشتی ایجاد کنید.
دعوت از تابع باید شامل URL و تابعی باشد که هنگام آماده شدن پاسخ اجرا میشود.
مثال
loadDoc("url-1", myFunction1); loadDoc("url-2", myFunction2); function loadDoc(url, cFunction) { const xhttp = new XMLHttpRequest(); xhttp.onload = function() {cFunction(this);} xhttp.open("GET", url); xhttp.send(); } function myFunction1(xhttp) { // اینجا عمل است } function myFunction2(xhttp) { // اینجا عمل است }
ویژگی onload
readyState
وضعیت XMLHttpRequest را ذخیره میکند.
onreadystatechange
ویژگی یک تابع بازگشتی را تعریف میکند که هنگام تغییر readyState اجرا میشود.
وضعیت
ویژگی و statusText
ویژگی وضعیت XMLHttpRequest را ذخیره میکند.
ویژگی | توضیح |
---|---|
onreadystatechange | تابعی را تعریف میکند که هنگام تغییر readyState属性 فراخوانی میشود. |
readyState |
وضعیت XMLHttpRequest را ذخیره میکند.
|
وضعیت |
شماره وضعیت درخواست را بازمیگرداند
برای لیست کامل به اینجا بروید مستند مرجع پیام HTTP |
statusText | statusText |
برگردانیدن متن حالت (مثلاً "OK" یا "Not Found").
هر بار که readyState تغییر کند، تابع onreadystatechange فراخوانی میشود. 4
و status 200
وقتی که پاسخ آماده است:
مثال
function loadDoc() { const xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt"); xhttp.send(); }
رویداد onreadystatechange چهار بار (1-4) فعال شد، هر بار تغییر حالت readyState یک بار.
- صفحه قبلی معرفی AJAX
- صفحه بعدی درخواست AJAX