در مقاله ایجاد شیئ XML درخواست داده از سرور با ای جکس توضیح دادیم که میتوان با ای جکس به سرور درخواستی را ارسال و داده ای را دریافت کرد. در این مقاله نحوه تنظیمات این درخواست را مطالعه می کنیم.
ارسال داده به سرور
برای ارسال یک درخواست به یک سرور از متد های OPEN() و SEND() استفاده می کنیم، این متد ها در شئی XMLHttpRequest بکار خواهند رفت:
متد open(method, url, async) : آرگومان متد مقادیر GET و POST
URL:مکان فایل در سرور را مشخص می کند.
Async : مقدار True یا False را میگیرد.
Send(): ارسال درخواست با متد GET
Send(String): ارسال درخواست به متد POST
متد GET or POST:
GET ساده تر و سریعتر از POST است ، شما میتوانید از این متد در اکثر مواقع استفاده کنید.
در شرایط زیر از متد POST استفاده کنید:
هنگامی که میخواهید فایل یا بانک داده در سرور را بروزرسانی کنید.
هنگام ارسال مقادری زیادی داده به سرور، متد POST محدودیت سایز ندارد.
فرستادن داده های کاربر در هنگامیکه این اطلاعات نیاز به امنیت دارند.
درخواست GET
یک درخواست GET ساده:
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
در مثال بالا، شما ممکن است داده های کش شده را دریافت کنید.، برای پیشگیری از این موضوع از ID یا URL های منحصر به فرد استفاده کنید:
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
اگر میخواهید اطلاعات را با متد GET ارسال کنید، اطلاعات URL را نیز اضافه کنید:
مثال :
xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
درخواست POST
یک درخواست POST ساده:
xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
برای ارسال داده هایی مانند فرم های HTML ، افزودن HTTP هدر با درخواست setRequestHeader() باید نوع داده را در متد Send مشخص کنید.
مثال:
xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
متد setRequestHeader(header, value) : یک HTTP headers ایجاد می کند.
Header: نام هدر را تعیین می کند
Value:مقدار هدر را تعیین می کند
آدرس یک فایل روی سرور
پارامتر URL در متد Open، یک آدرس در سرور سایت خودتان میباشد:
xhttp.open("GET", "ajax_test.asp", true);
فایل میتواند از هر نوعی مانند TXT،XML یا فایل های اسکریپت سرور مانند ASP یا PHP باشد. هر کدام از این فایل ها میتواند یک عملیات را قبل از پاسخ دهی انجام دهد.
همآهنگی : درست یا غلط؟
درخواست سرور باید بصورت هماهنگ ارسال شود.
پارامتر async در متد OPEN() باید مقدار True را ارسال کند:
xhttp.open("GET", "ajax_test.asp", true);
با ارسال همآهنگ ، جاوا اسکریپت نیازی به انتظار برای پاسخ سرور ندارد، اما میتواند بجای آن :
یک اسکریپت دیگر را درحال انتظار برای پاسخ سرور پردازش کند.
تعامل با پاسخ سرور بعد از اینکه پاسخ را دریافت کرد.
صفت onreadystatechange :
با شیئ XMLHttpRequest شما میتوانید یک عملگر را تعریف کنید. تا هنگام دریافت پاسخ پردازش شود.
عملگر هنگام دریافت صفت onreadystatechange در شیئ XMLHttpResponse پردازش میشود:
مثال :
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();
درخواست همآهنگ
برای پردازش درخواست همآهنگ ، سومین المان از پارامترهای متد OPEN() رو به false تغییر بدهید:
xhttp.open("GET", "ajax_info.txt", false);
برخی وقتها async = false برای تست های سریع بکار میرد.
از آنجا که کد منتظر پایان دریافت درخواست از سرور میشود، نیازی به استفاده از عملگر onreadystatechangeنیست:
مثال
xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
استفاده از XMLHttpRequest (async = false) توصیه نمی شود. زیرا که باعث میشود که جاوا اسکریپت از پردازش باز ایستد واگر سرور به هر دلیلی پاسخگو نباشد کل نرم افزار از کار خواهد ایستاد.
استفاده از Synchronous XMLHttpRequest درحال حذف از استاندارد های وب است ولی این پروسه ممکن است سالها به طول بیانجامد.
ابزار های توسعه مدرن درباره خطاهای ممکن در استفاده synchronous requests به شما هشدار میدهند.
براي بهره مندي از مشاوره تخصصي در زمینه طراحی سایت در کرج با شرکت سارگون تماس بگيريد