PDA

View Full Version : آموزش: آموزش کامل ASP.NET AJAX



V0R73X
سه شنبه 21 تیر 1390, 11:55 صبح
سلام دوستان.
نمیدونم چرا امروز رفتم تو مود آموزش! خوب این اواخر حرف از AJAX زیاده و آموزش کم. من یه چند تا سرچ توی فروم کردم تاپیک های پراکنده زیادی درباره این موضوع دیدم، گفتم یه آموزش کامل و درستو حسابی هم خودم بزارم که دیگه کامل بشه امویدوارم دوستان خوششون بیاد.
با یک تیتر قوی شروع کردم انشا... که با تشکر های دوستان این تیتر به واقعیت تبدیل میشه. البته این اولین آموزش منه امیدوارم به بزرگی خودتون کمی کاستی داره ببخشین!
دوستان اگر جهت کامل کردن مطلب پستی بزارین عالیه ولی اگر سوالی دارین با پیام خصوصی بهم بگین تاپیک خراب نشه اگه نکته مهمی بود خودم میزارم تو تاپیک.
نکته1: AJAX چیست؟ خوب این AJAX که هی میگن در واقع اصلا چیز سخت یا گنده ای نیست، فقط اینکه خیلی اسم در کرده مثل AI، مثلا چیزی به نام برنامه نویسی AI نداریم بلکه AI فقط یه جور تعریفه. AJAX هم همینه. حالا وقتی ما میگیم AJAX منظورمون چیه؟ خوی این فقط یه تکنیک برای اجرا کردن اسکریپت های سمت سروره به طوری که صفحه PostBack انجام نده یا به عبارتی کاربر نفهمه که ما داریم پشت صحنه یه کارایی انجام میدیم!
میگین چطوری؟ خوب معلومه با اسکریپت سمت کلاینت! تا حالا به ذهنتون رسیده که با ترکیب جاوااسکریپت و کد پشت صحنه ASP.NET یه برنامه بسازین؟ خوی تنها راه حل برای اینکار AJAXه.
به زبان عامیانه بخوام بگم AJAX یعنی اینکه سر کاربر رو با یک سری اسکریپت های جاوااسکریپت گرم کنیم و بعد کارامونو سمت سرور با XMLHttpRequest انجام بدیم تا کاربر نفهمه که ما داریم سمت سرور کاری میکنیم (شتر دیدی ندیدی!)
خوب حالا این XMLHttpObjectRequest چیه؟ این قلب تپنده ی AJAXه که سرور و کلاینت رو بهم متصل میکنه! چطوری؟

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
</script>
این کد رو توی یک اسکریپت جاوا اسکریپت مینویسیم. توی تگ Body هم اینرو مینویسیم:

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>
خوب هنوز تموم نشده! تنها کاری که باید کرد اینه که یه فایل تکست تو سرور ایجاد میکنید با همون نای که تو کدتون استفاده کردید (در این نمونه ajax_info.txt) و متنی که میخواید با کلیک کردن دکمه نمایش داده بشه رو توش مینویسید.
و بعد... Magic!!!!! میبینید که ما از فایل متنی داده میخونیم و نمایش میدیم بدون اینکه صفحه PostBack انجام بده.
خوب AJAX همش همینه! حالا یه نگاه دیگه به تیتر میکنیم میگه ASP.NET AJAX خوب تا اینجا که AJAX بود پس ASP.NETش کجاست؟ الان عرض میکنم:
تو ASP.NET مایکروسافت لطف کرده و AJAX رو برامون خیلی آسون کرده (به زبان عامیانه کشک!) به این طورت که ما هر عملیاتی که میخوایم AJAXی انجام بشه رو توی 2 مرحله انجام میدیم:
1. یه کنترل ScriptManager میزاریم توی صفحه
2. کنترل هایی که رویداد هاشون باعث Postback صفحه میشه رو میندازیم داخل یک کنترل UpdatePanel

<asp:updatepanel runat="server" id="Update1">
<ContentTemplate>Controls Here</ContentTemplate>
</asp:updatepanel>
میبینین که سادس و همش همینه! حالا اگر میخواهید که رویداد ها رو هم مشخص کنید (مثلا میخوایم فقط یکیشون به صورت AJAXی رفتار کنه یا به عبارتی Asynchronous یعنی بدون PostBack) کافیه یه تک Triggers بعد از ContentTemplate اضافه کنیم و Item های AsyncPostbackTrigger و یا PostBackTrigger رو اضاضه کنیم به همراه یک Attribute که ای دی کنترل فرستنده رویداد رو مشخص میکنه. اینم از کد نمونه:

<asp:updatepanel runat="server" id="Update1"><ContentTemplate>
Controls Here
</ContentTemplate><Triggers>
<asp:AsyncPostBack ControlID="DrpNames"/><asp:PostBackTrigger ControlID="cmdSubmit"/>
</Triggers></asp:updatepanel>
حالا اگر رو دکمه cmdSubmit کلیک کنیم صفحه رو بازپس میده ولی اگه از تو لیست DrpNames گزینه ای رو انتخاب کنیم هرچند AutoPostBackش رو True قرار داده باشیم PostBack نمیده ولی در عوض حالا میتونیم تو Code-Behind برای رویداد SelectedIndexChanged این لیست برنامه نویسی کنیم بازم بدون اینکه کاربر بفهمه!

خوب حالا با AJAX و ASP.NET AJAX آشنا شدیم ولی داستان ادامه دارد:
1. چطوری برنامه ای مثل Gmail بسازیم؟
2. AJAX Control Toolkit چیست؟
3. چطور با XMLHttpRequest کار کنیم؟
این ها رو هم قصد دارم بعدا بگذارم به استقبال دوستان بستگی داره. اگر به AJAX علاقه مند هستید و میخواهید بازهم یاد بگیرید کافیه از دکمه تشکر استفاده کنید.

NIUSHA_KH
چهارشنبه 06 مهر 1390, 18:25 عصر
دوست عزیر ممنون از نوشته ی مفیدتون
من یک مشکلی دارم ، تو ASP.net 2005 نمی تونم ار ScriptManager و UpdatePanel استفاده کنم چون تو ToolBox ندارمشون و وقتی تو اینترنت گشتم فهمیدم باید Ajax Control Toolkit رو نصب کنم دانلودش کزدم اما وقتی میخوام dll اونو نصب کنم میگه جرو ماجولهایA SP.net نیست و به همین خاطر من نمیتونم نصبش کنم. البته یک ASP.net2010 هم نصب کردم و همین dll رو تو ToolBox اون نصب کردم و مشکلی نبود اما منشکل اینجاست که من تو کار با ASP.net2010 مشکل دارم و برام خیلی سخته .آیا میشه تو ASP.net 2005 هم از این اسکریپتها استفاده کرد؟

fakhravari
پنج شنبه 07 مهر 1390, 01:54 صبح
با سلام
به چه شکل میشود مقدار کلیک روی Rating از ابزارهای تولکیت دست یافت.
سمپلای خودش هست اما مقدار دهیشو نمیدونم.

moferferi
پنج شنبه 07 مهر 1390, 10:17 صبح
سلام.
دوستان اگه کسی تازه میخواد شروع به یادگیری اجاکس بکنه بهتره از کنترل های تولکیت استفاده نکنه.چون این پروژه از طرف مایکروسافت دیگه پشتیبانی نمیشه.
بهتره از jquery و روش json استفاده کنید.

razeghaik1
چهارشنبه 22 شهریور 1391, 12:32 عصر
خب jquery و روش json که می گید باید چجوری کار کنیم؟!
آیا شما مقاله ای یا لینکی در این مورد دارید؟همچنین ابزار های این کارو باید از کجا پیدا کنیم؟
ممنون

javad.nic63
چهارشنبه 22 شهریور 1391, 13:26 عصر
باسلام خدمت دوستان. فیلم زیر که در اون آموزش قسمت اول ajax در asp.net از طریق کتابخانه jquery رو آموزش دادم خودم تهیه کردم. سعی کردم در اون ترکیبی از جاوا اسکریپت و jquery در asp.net را نشون بدم. درواقع توی این فیلم آموزش یک لاگین از طریق jquery داده شده. البته مباحث مقدماتی jquery هم گفته شده. در قسمتهای بعد آموزش خواندن و ذخیره اطلاعات از دیتابیس و همچنین تغییر dropdownList رو هم میذارم. امیدوارم برای دوستان مفید باشه. فقط باید ببخشید که حجمش زیاد شده.

قسمت اول: آموزش لاگین در asp.net بوسیله jquery
لینک 4shared
http://www.4shared.com/file/74hk4SCd/AjaxJquery1.html

قسمت دوم: آموزش خواندن اطلاعات از دیتابیس و همچنین ذخیره اطلاعات در دیتابیس
لینک 4shared
http://www.4shared.com/file/A5ktg39M/AjaxJquery2.html

قسمت سوم: نحوه پرکردن dropdownlist با استفاده از اطلاعات ارسالی توسط شما
لینک 4shared
http://www.4shared.com/file/6ApB4UFJ/ajaxJquery3.html

فایل پروژه ساخته شده:
ضمیمه 73506 (http://barnamenevis.org/attachment.php?attachmentid=73506)

frigga
دوشنبه 15 اردیبهشت 1393, 17:50 عصر
آقا کی گفته دیگه پشنیبانی نمیشه؟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ورژن ها جدیدش هم اومده که کجایی برادر!

sepehrforough
دوشنبه 15 اردیبهشت 1393, 22:00 عصر
مرسی بابت پستتون ، من یه مشکلی با ajaxtoolkit برای rating دارم و ان ساختن متد onchanged هستش ، میشه بگید چه طوری باید این متد ساخته شه و با کلیک رو ی ستاره ها این متد اجرا شه؟

sepehrforough
دوشنبه 15 اردیبهشت 1393, 22:04 عصر
با سلام
به چه شکل میشود مقدار کلیک روی Rating از ابزارهای تولکیت دست یافت.
سمپلای خودش هست اما مقدار دهیشو نمیدونم.

آره منم نمیدونم چه جوری میشه ه مقدارش دست باقت ، میشه راهنمایی کنید؟

meysam99
سه شنبه 16 اردیبهشت 1393, 12:14 عصر
سلام
ممنون بابت آموزش خوبتون.
اپدیت پنل و اسکریپت منیجر برای سادگی کار خیلی خوبه. ولی به نظر من اگه بخواهیم واقعا یک سایت کامل با AJAx پیداه کنیم بهتر از یک وب سرویس استفاده کنیم که در حال حاضر بهترین آنها Web Api هست بعد با جاوااسکریپت یا جی کوئری (برای ساده شدن) این ارتباط را برقرار کنیم. سرعت صفحات و همچین. تمیزی کار بسیار زیبا میشود