|
|
|
|
|
در این پست و پستهای بعدی من گرایش برنامه نویسی به روش آژاکس را به سمت جاوا تغییر می دهم و جاوا را زبانی برای پیاده سازی آژاکس مورد استفاده قرار می دهم. برای این پست من به تشریح یک فعل و انفعال آژاکس که با جاوا پیاده سازی شده پرداختم. تشریح فعل و انفعال آژاکس : بحث اکنون ما این است که آژاکس و مباحث سطح بالای آن چیست؟ اجازه بدهید کلمات مرتبط را کنار هم بگذاریم و یک برنامه کاربردی J2EE با قابلیت آژاکس را نشان دهیم. به عنوان مثال ، برنامه کاربردی وب شامل یک فرم HTML می باشد که این فرم یا به یک صفحه استاتیک تکنولوژی JSP و یا به یک صفحه ای که در منطق سمت Servletserver قرار داده شده تا برای اعتبارسنجی احتیاج به دوباره سازی صفحه نداشته باشد، نیاز دارد. مولفه وب سمت سرور که ValidateServlet نامیده می شود، منطق اعتبارسنجی را فراهم می نماید. شکل زیر جزئیات منطق اعتبارسنجی یک فعل و انفعال آژاکس را نشان می دهد.
عناوین زیر مراحل فعل وانفعالات آژاکس را نشان می دهند، همانگونه که در شکل قبل ملاحظه نمودید.
نگاهی به مراحل فعل و انفعالات آژاکس با جزئیات بیشتر که البته در این پست به سه مرحله اول پرداخته و موارد بعدی در پست های آینده بررسی خواهد شد. 1- رخداد کابر توابع JavaScript به عنوان نتیجه یک رویداد فراخوانده می شوند. در این مورد تابع Validate() ممکن است به عنوان نتیجه یک رویداد onkeyup بر روی یک لینک و یا یک مولفه فرم باشد.
<input type="text" Size="20" Id="userid" Name="id" Onkeyup="validate();"> هر وقت که کاربر کلیدی را در فیلد فرم فشار می دهد این عنصر فرم تابع validate() را فراخوانی می کند. 2 – ساخت و پیکربندی شی XMLHttpRequest نحوه ساخت و پیکربندی یک شی XMLHttpRequest به صورت زیر می باشد: function validate() { var idField = document.getElementById("userid"); var url = "validate?id=" + escape(idField.value); if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("GET", url, true); req.onreadystatechange = callback; req.send(null); } تابع validate()، شی XMLHttpRequest را می سازد و تابع open را برای آن فراخوانی می کند. تابع open نیازمند سه آرگومان می باشد: متد HTTP که GET و یا POST می باشد. URL مولفه سمت سرور که شی با آن فعل و انفعال انجام می دهد. مقدار Boolean، که غیر همزمان بودن یا نبودن فراخوانی را نشان می دهد. XMLHttpRequest.open(String method, String URL, Boolean asynchronous) اگر یک فعل و انفعال به صورت غیر همزمان (true) باشد باید یک تابع callback مشخص شود. تابع callback برای این فعل و انفعال با دستور req.onreadystatechange = callback; تعریف می شود. برای جزئیات بیشتر بخش 6 را ببینید. 3- ساخت فراخوان شی XMLHttpRequest وقتی اجرای تابع به req.send(null) می رسد؛ فراخوان ساخته می شود.در مورد یک متد HTTP GET محتوا شاید خالی و یا null باقی بماند. وقتی این تابع روی یک شی XMLHttpRequest فراخوانده می شود، URL که در زمان پیکربندی شی مورد استفاده قرار گرفته فراخوانده می شود. در مورد این مثال اطلاعاتی که پست شده است (id) شامل یک پارامتر URL می باشد. وقتی که درخواست idempotent است یعنی درخواستی که دو بار تکرار می شود و همان نتیجه را باز می گرداند، از متد HTTP GET استفاده می شود. زمانیکه که متد HTTP GET مورد استفاده قرار می گیرد، تعدادی از مرورگرها و سرورهای وب طول URL ، که شامل پارامترهای مجزای URL می باشد را محدود می کند. به هنگام ارسال اطلاعات به سمت سرور متد HTTP POST مورد استفاده قرار میگیرد که این امر موجب تاثیرگذاری بر وضعیت برنامه سمت سرور خواهد شد. برای اجرای متد HTTP POST ، همانند دستور زیر باید عمل نمود: req.setRequestHeder("Content-Type" , "application/x-www-form-urlencoded"); req.send("id=" + escape(idTextField.value)); به هنگام ارسال مقادیر فرم با استفاده از تکنولوژی JavaScript باید به رمزگذاری (encode) مقادیر فیلد توجه داشته باشید. JavaScript شامل تابع escape() می باشد. برای اطمینان از اینکه محتوای متمرکز شده به طور صحیح رمزگذاری شده و کاراکترهای ویژه به طور صحیح مجزا شده اند بایستی از این تابع استفاده شود. تا اینجا سه مرحله رو بررسی کردیم که مراحل بعدی باشه در روزهای آینده. با تشکر فراوان از سرکار خانم اسدی که زحمت ترجمه این مقاله را قبول فرمودند و مرا در تهیه این مطلب بسیار یاری نمودند. |
||
|
+
نوشته شده در دوشنبه بیست و نهم خرداد 1385ساعت 15:59 توسط رضا نوجوان
|
|
||