‎‎درخواست آجكس ازسرورAJAX Request -‎

Previous >    <Next  

‎‎شئ آجكسAJAX -‎ XMLHttpRequest -‎

‎‎شئ‎XMLHttpRequest‎ براي درخواست داده ازيك سرور استفاده ميشود .

‎SEnd a Request To a Server‎

‎‎ارسال درخواست بسرور

‎براي ارسال يك درخواست به سرور از متدهاي‎open( ), send( )‎ شئ ‎XMLHttpRequest‎‎استفاده ميشود :

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();

‎xhttp‎شئ ايجاد شده از نوع‎XMLHttpRequest‎ است .

‎‎متدهاي شئ درخواست آجكس مطابق جدول زيراست:

‎‎متد ‎‎شــرح
open(method,url,async) ‎method‎ـ نوع درخواست GET يا POST

‎url‎ـ آدرس يوآرال

‎anync‎ـ ناهمزماني‎(true)‎ همزماني‎(false)

send( ) ‎‎ارسال درخواست به سرور، مورد استفادهGET
send(string) ‎‎ارسال درخواست به سرور، برايPOST

‎The url -‎ A File On a Server‎

‎url‎آدرس فايل روي يك سرور

‎پارامترurl در متد‎open( )‎ آدرس يوآرال فايلي است روي محيط سرور ‎در هاست يا هاست محلي

‎اين فايل مي تواند هر نوع فايلي باشد، مانندtxt وxml .يا فايل هاي اسكريپت نويسي سروري . ‎مانندasp , php كه ميتوانند قبل از ارسال پاسخ روي سرور اقداماتي انجام دهند .

‎‎تنظيم ناهمزماني‎Asynchronous -‎ Tre or False?‎ -‎

‎‎درخواست هاي سرور بايد بصورت ناهمزمان با بارگذاري بايد ارسال شوند.

‎‎پارامترasync متد ‎open( )‎ بايد روي true تنظيم شود :

xhttp.open("GET", "ajax_test.asp", true);

‎‎با ارسال ناهمزمان، جاواسكريپت مجبورنيست منتظر پاسخ سرور بماند، بلكه ميتواند:

‎مقدار پيش فرض پارامتر ناهمزماني بصورتasync=true است . بهمين دليل براحتي ميتوانيد آنرا دركد ‎درج نكنيد و تابع‎open( )‎ بدون اين پارامتر باشد .

‎ويژگي ناهمزماني شئ‎XMLHttpRequest‎ بصورت async=false توصيه نمي ‎شود، زيرا بايد جاوااسكريپث براي دريافت جواب متوقف شود .اگر دراين حالت سرور مشغول ويا كند ‎باشد، ممكن برنامه هنگ كرده ويا متوقف گردد.

‎‎نوع ارسال‎Get or POST ?‎ -‎

‎‎نوع ارسال‎GET‎ در بيشتر موارد ، ساده تر وسريعتر از ‎POST‎ است.

‎‎با اين حال هميشه از درخواست هاي‎POST‎ در موارد زير استفاده كنيد :

‎‎درخواستهايGET

‎‎مثال ـ يك درخواست ساده‎Get

xhttp.open("GET", "demo_get.asp");
xhttp.send();

--(go to editor for change code and run)

‎در مثال فوق ممكن برنامه منجر به استفاده از نتيجه كش گردد .براي اجتناب از اين اتفاق ‎يك شناسه منحصر بفرد بهurl اضافه كنيد . اطلاعات كش ، اطلاعات بروزنمي باشد.

‎‎مثال ـ اصلاح شده بالا

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

--(go to editor for change code and run)

‎‎اگر ميخواهيد اطلاعات را با روشGET ارسال كنيد، اطلاعات را به URL اضافه كنيد :

‎‎مثال ـ نمونه ارسال اطلاعات با درخواستGET

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

--(go to editor for change code and run)

‎‎نحوي استفاده سرور از ورودي ونحوه پاسخ سرور به يك در خواست ، درفصل بعدي توضيح داده شده است.

‎‎درخواستهايPOST

‎‎مثال ـ يك درخواست ساده‎POST

xhttp.open("POST", "demo_post.asp");
xhttp.send();

--(go to editor for change code and run)

‎براي دادهPOST مشابه بافرمHTML يك هدرHTTP با متد ‎setRequestHeader()‎‎‎اضافه نمائيد .داده هائي كه ميخواهيد در متد ‎send()‎‎‎ارسال شود، در آن مشخص كنيد .

‎‎مثال ـ درخواست با ارسال نمونه داده

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");

--(go to editor for change code and run)

‎‎متد ‎‎شــرح
setRequestHeader(heaher , value) ‎‎هدرHTTP به درخواست اضافه ميكند .

‎‎header‎‎ـ نام ومقدار هدر را مشخص ميكند .

‎‎‎درخواست همزمانيSynchromnous Request -‎

‎براي اجراي يك درخواست همزمان، پارامترسوم متد‎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;

--(go to editor for change code and run)

‎ويژگي ناهمزماني شئ‎XMLHttpRequest‎ بصورت async=false توصيه نمي ‎شود، زيرا بايد جاوااسكريپث براي دريافت جواب متوقف شود .اگر دراين حالت سرور مشغول ويا كند ‎باشد، ممكن برنامه هنگ كرده ويا متوقف گردد.

‎ابزارهاي توسعه دهنده هاي مدرن تشويق ميشوند در مورد استفاده از درخواست هاي همزمان هشدار ‎دهند و ممكن است در صورت وقوع يك استثنايInvalidAccessError ايجاد كنند .


Previous >    <Next