با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه گذشته با آموزش XMLHttp همراه شما بودیم و شما را با روش ها و ویژگی های XMLHttpRequest object آشنا کردیم. در این جلسه آموزش AJAX در XML را با آموزش کار با Request در AJAX ادامه می دهیم.
می توان از XMLHttpRequest object برای تبادل داده در یک سرور استفاده کرد.
برای ارسال یک درخواست به سرور، از روش های ()open و ()send از XMLHttpRequest object استفاده می کنیم:
1 2 | xhttp.open("GET", "ajax_info.txt", true); xhttp.send(); |
روش | توضیحات |
open(method, url, async) | نوع درخواست را مشخص می کند روش: نوع درخواست: GET یا POST |
()send | درخواست را به سرور ارسال می کند (مورد استفاده برای GET) |
(send(string | درخواست را به سرور ارسال می کند (برای POST استفاده می شود) |
GET ساده تر و سریع تر از POST است و می تواند در اکثر موارد استفاده شود.
با این حال، همیشه از درخواست های POST زمانی استفاده کنید که:
فایل cached گزینه ای نیست (به روز رسانی یک فایل یا پایگاه داده در سرور).
ارسال مقدار زیادی از اطلاعات به سرور (POST محدودیت اندازه ندارد).
ارسال ورودی کاربر (که می تواند شامل کاراکتر های ناشناخته باشد)، که در این صورت POST می تواند قوی تر و امن تر از GET باشد.
یک درخواست GET به صورت ساده به شکل زیر است:
1 2 | xhttp.open("GET", "demo_get.asp", true); xhttp.send(); |
در مثال بالا، ممکن است نتیجه cache شده را دریافت کنید. برای جلوگیری از اتفاق، یک شناسه ID منحصر به فرد به URL اضافه کنید:
1 2 | xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true); xhttp.send(); |
روش | توضیحات |
setRequestHeader(header, value) | HTTP headers را به request اضافه می کند: header: نام هدر را مشخص می کند value: مقدار هدر را مشخص می کند |
پارامتر url از روش ()open یک آدرس به یک فایل در یک سرور است:
1 | xhttp.open("GET", "ajax_test.asp", true); |
این فایل می تواند هر نوع فایل، مانند txt. و xml.، یا فایل های اسکریپت سرور مانند asp. و php. (که ممکن است قبل از ارسال پاسخ روی سرور موجب ایجاد واکنش شود) باشد.
درخواست سرور باید به صورت یکپارچه ارسال شود.
بنابرین پارامتر async از روش ()open باید به درستی تنظیم گردد.
1 | xhttp.open("GET", "ajax_test.asp", true); |
با ارسال غیر همزمان، جاوا اسکریپت مجبور نیست که برای پاسخ سرور را صبر کند، بلکه می تواند به جای آن:
با استفاده ازXMLHttpRequest object، می توانید یک تابع را برای زمانی که درخواست را به عنوان یک پاسخ دریافت می کنید، تعریف نمایید.
این تابع در ویژگی onreadystatechange در XMLHttpResponse object تعریف شده است:
1 2 3 4 5 6 7 | xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send(); |
در جلسه بعدی مطالب بیشتری راجع به onreadystatechange خواهید آموخت.
در ادامه جلسه آموزش کار با Request در AJAX شما را با درخواست همزمان یا Synchronous Request آشنا می نماییم.
برای اجرای یک درخواست همزمان، پارامتر سوم در روش ()open را به false تغییر دهید:
1 | xhttp.open("GET", "ajax_info.txt", false); |
گاهی اوقات async = false برای تست سریع استفاده می شود.
علاوه بر این می توانید درخواست های همزمان را در کد جاوا اسکریپت قدیمی پیدا نمایید.
از آنجا که کد برای تکمیل سرور صبر می کند، نیازی به تابع onreadystatechange نیست.
1 2 3 | xhttp.open("GET", "ajax_info.txt", false); xhttp.send(); document.getElementById("demo").innerHTML = xhttp.responseText; |
استفاده از XMLHttpRequest همزمان (async = false) توصیه نمی شود، زیرا جاوا اسکریپت اجرا می شود تا پاسخ سرور آماده گردد و اگر سرور شلوغ یا کند باشد، برنامه قطع و یا متوقف خواهد شد.
گرچه XMLHttpRequest همزمان در حال فرار از استاندارد وب است، اما این روند می تواند سالها طول بکشد.
در این جلسه با آموزش کار با Request در AJAX همراه شما بودیم و در چند گام ساده و عملی کار با آن را آموختیم.
در جلسه بعدی این دوره را با آموزش Server Response دنبال می کنیم.
با پی وی لرن همراه باشید.