گروه مقاله : طراحی سایت
تاريخ انتشار : 1396/07/15 - 11:10
كد :7882

ارسال داده به سرور با ای جکس

در این مقاله نحوه ارسال داده به سرور با ای جکس را بررسی می کنیم

ارسال داده به ای جکس

 

در مقاله ایجاد شیئ 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 به شما هشدار میدهند.

 

براي بهره مندي از مشاوره تخصصي در زمینه طراحی سایت در کرج با شرکت سارگون تماس بگيريد

نظرات كاربران :