شبكة ابن الخليج

Sitemap | Archive | Tag Could
دليل مواقع شبكة ابن الخليج
التسجيل البحث مشاركات اليوم اجعل جميع المنتديات مقروءة الأرشيف

اضف موقعك في دليل العربي - ينتهي الإعلان بتاريخ 19\6\2008سنمار لخدمات تصميم الويب - ينتهي الإعلان بتاريخ 19\6\2008شبكة مدينة الحب - ينتهي الإعلان بتاريخ 19\8\2008
اضف اعلانك هنااضف اعلانك هناملتقى الدعوة الاسلامي - ينتهي الإعلان بتاريخ 6\8\2008
     

مقدمة في الأجاكس والـ XMLHttpRequest

مناقشة موضوع مقدمة في الأجاكس والـ XMLHttpRequest في دروس برمجة مواقع; الأجاكس تقنية جديدة والتي أخذت الويب إلى مرحلة جديدة كليا والتي تسمى في الوقت الحالي بالويب 2.0، فما هي الأجاكس؟ الأجاكس AJAX وهي بالعادة تكتب كاملة بالحروف *****ينية الكبيرة لانها تعتبر اختصار لكلمة ( ...

العودة شبكــة ابـن الخـليــج > منتديات تعليمية > دروس برمجة مواقع

رد
 
LinkBack أدوات الموضوع طرق مشاهدة الموضوع
قديم 10-17-2006, 06:19 صباحاً   #1 (permalink)
.::+: Gulf Son :+::.

 
الصورة الرمزية ADMIN
 
تاريخ التسجيل: May 2005
الدولة: بلاد الخليج
المشاركات: 44,918
معدل تقييم المستوى: 53 ADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيطADMIN نشيط
إرسال رسالة عبر مراسل ICQ إلى ADMIN إرسال رسالة عبر مراسل MSN إلى ADMIN
مقدمة في الأجاكس والـ XMLHttpRequest


الأجاكس تقنية جديدة والتي أخذت الويب إلى مرحلة جديدة كليا والتي تسمى في الوقت الحالي بالويب 2.0، فما هي الأجاكس؟
الأجاكس AJAX وهي بالعادة تكتب كاملة بالحروف *****ينية الكبيرة لانها تعتبر اختصار لكلمة (Asynchronous java script And XML).

والأجاكس كانت موجودة من زمان ولكن لم يعرف أحد أهميتها أو كيفية استخدامها بالشكل الصحيح حتى قامت شركة Google بتوظيفها في برامجها الجديدة كالGmail وGoogle maps، وتتيح الأجاكس لمطوري الويب بإضافة حيوية وديناميكية للموقع كإضافة معلومات حية كأسعار البورصة من دون الحاجة لإعادة تحميل الصفحات كلما أراد المستخدم أن يطلب معلومة من الServer-Side أوعن طريق الخادم، فلغات برمجة الويب تنقسم إلى قسمان Client-Side وهي كالجافاسكربت والvb سكربت وقسم يسمى بالServer-Side وهي كالphp و الasp، و تقنية الأجاكس في الأساس هي استخدام للغة الجافاسكربت وهي لغة Client-Side لطلب أي معلومة موجودة على الServer-Side من دون الحاجة لطلب كامل الصفحة.

وهناك اعتقاد خاطئ عند بعض الناس أن الأجاكس هي لغة جديدة وصعبة ويجب تعلمها من الصفر، والصحيح أن الأجاكس هي تقنية تستخدم لغة الجافاسكربت بالكامل لطلب المعلومات، فإذا كنت تعرف القليل عن الجافاسكربت أو حتى إن لم تكن تعرف ولكن لديك خبرة في اللغات المشتقة من لغة الC كالphp فسيكون تعلم الجافاسكربت بالنسبة لك شيء سهل وبسيط جدا وسأحاول بإذن الله شرح هذه التقنية الجميلة بسهولة بحيث أنك تتقنها في عند انتهاءك من قراءة هذا الدرس.

ستجد تحت الكود الكامل بالجافاسكربت لعمل بسيط بالأجاكس والXMLHttpRequest وسأشرح كل جزء منه على حده.


كود:
function createRequestObject() {
var req;
if(window.XMLHttpRequest){
// لمتصفحات الفايرفروكس والأوبرا والسفاري
req = new XMLHttpRequest();
} else if(window.ActiveXObject) {
// للإنترنت اكسبلورر النسخة الخامسة فما فوق
req = new ActiveXObject("Microsoft.XMLHTTP");
} else {
// نستخدم دالة ال alert لكي نظهر حصول خطأ وغالبا يكون الخطأ لمستخدمي نسخ قديمة من المتصفحات
alert('حصل خطأ في طلب الصفحة...الرجاء المحاولة مرة أخرى وإذا لم تنفع جرب أن تنزل نسخة جديدة من المتصفح');
}
return req;
}
// نطلب الدالة createRequestObject() ونعطي الناتج للمتغير http
var http = createRequestObject();
function sendRequestGet(act) {
// نطلب صفحة ال php
http.open('get', 'myphpscript.php?act='+act, true);
// عندما ننتهي من طلب الصفحة نطلب دالة handleResponse
http.onreadystatechange = handleResponse;
// الانتهاء من الطلب
http.send(null);
}
function handleResponse() {
if(http.readyState == 4 && http.status == 200){
// نعطي المتغير response النص اللذي رجع من طلبنا لصفحة ال php
var response = http.responseText;
if(response) {
// نحدث محتوى ال div والتي اسمها ajaxTest
document.getElementById("ajaxTest").innerHTML = response;
}
}
}


البداية...


كود:
function createRequestObject() {
var req;
if(window.XMLHttpRequest){
// لمتصفحات الفايرفروكس والأوبرا والسفاري
req = new XMLHttpRequest();
} else if(window.ActiveXObject) {
// للإنترنت اكسبلورر النسخة الخامسة فما فوق
req = new ActiveXObject("Microsoft.XMLHTTP");
} else {
// نستخدم دالة ال alert لكي نظهر حصول خطأ وغالبا يكون الخطأ لمستخدمي نسخ قديمة من المتصفحات
alert('حصل خطأ في طلب الصفحة...الرجاء المحاولة مرة أخرى وإذا لم تنفع جرب أن تنزل نسخة جديدة من المتصفح');
}
return req;
}


هذا الكود سهل وهي عبارة عن دالة اسمها createRequestObject وهي تتحق من نوع المتصفح لديك وأذا ماكن يدعم ال XMLHttpRequestأو لا.أولا عرفنا متغير جديد اسمه req وهو خالي ومن ثم نتحقق دالة window.XMLHttpRequest إذا أرجع لنا True فإن المتصفح سيكون فايرفوكس أو أوبرا أو سفاري، لذلك سنعطي المتغير req اللذي عرفناه في البداية بداية جديدة ل XMLHttpRequest()وهي دالة متعرفة سابقا في هذه المتصفحات للتعامل مع الأجاكس والXMLHttpRequest، أما إذا كان التحقق الأول فشل ونجح التحقق الثاني وهو window.ActiveXObject فسيكون المتصفح انترنت اكسبلورر وسنتخدم دالة متعرفة في هذا المتصفح اسمها ActiveXObject("Microsoft.XMLHTTP") وسنعطيها للمتغير req.

إذا فشلت كل المحاولات اذا المتصفح إما يكون قديما أو أنه لايدعم الXMLHttpRequest، وفي آخر الدالة نرجع مايحتويه المتغير req.

وبعد ذلك نعرف متغير جديد ونسميه http ونعطيه نسخه من الدالة createRequestObject وسيحتوي جميع الخصائص للXMLHttpRequest.


كود:
var http = createRequestObject();


وكما تعرفون هناك طريقتان لطلب المعلومات من الServer-Side وهما باستخدام طريقة GET وطريقة POST وطلب المعلومات باستخدام الأجاكس يختلف قليلا باختلاف طريقة الطلب وسأشرح هنا الطريقتين

طلب المعلومات باستخدام طريقة GET
انتهينا من تعريف المتغير الجديد والذي سميناه http واعطيناه خصائص الXMLHttpRequest، الآن سنطلب المعلومات بطريقة GET من صفحة الphp


كود:
function sendRequestGet(act) {
// نطلب صفحة ال php
http.open('get', 'myphpscript.php?act='+act, true);
// عندما ننتهي من طلب الصفحة نطلب دالة handleResponse
http.onreadystatechange = handleResponse;
// الانتهاء من الطلب
http.send(null);
}

ولايهم اللغة المستخدمة للServer-Side يمكن أن تكون php أو asp لايهم لانهما تعتبران لغات Server-Side كما أسلفنا.

هنا ترى دالتان يجب عليك فهمها وهما من خصائص الXMLHttpRequest هما open() و send()، في أول سطر نطلب الصفحة باستخدام طريقة get وهي تكون أول متغير في الدالة open() وأول متغير يكون نوع طلب الصفحة كما سنرى في القسم التالي والمتغير الثاني في الدالة يكون الصفحة المطلوبة وفي حالتنا هذه نطلب صفحة اسمها myphpscript.php وتأخذ متغير اسمه act ومتغير act نأخذه بالجافاسكربت ونضعه عندما نطلب الصفحة. ولأننا نستخدم طريقة GET فهي تأخذ المتغيرات عن طريق شريط التصفح لذلك نطلب دالة send() ونعطيها الأمر null، ولكن طريقة POST لاتأخذ متغيراتها عن طريق شريط التصفح لذلك تتغير قليلا عندما نطلب المعلومات، أما المتغير الثالث للداله فهو لاستخدام الطلب الغير تزامني أو الasynchronous للأجاكس ونعطيه true، والسطر


http.onreadystatechange = handleResponse;

هي تقول للXMLHttpRequest انه عندما تنتهي من طلب المعلومة وعند الاستعداد اطلب الدالة handleResponse() وهي دالة سنأتي لذكرها لاحقا.

طلب المعلومات باستخدام طريقة POST


كود:
function sendRequestPost(act) {
// نطلب صفحة ال php
http.open('post', 'myphpscript.php', true);
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// عندما ننتهي من طلب الصفحة نطلب دالة handleResponse
http.onreadystatechange = handleResponse;
// الانتهاء من الطلب
http.send('act='+act);
}

ستلاحظ التشابه إلى حد كبير بين الطريقتين POST و GET، ولكن الاختلاف ستلاحظه في الدالة send() وهي أننا نرسل المتغيرات التي نريدها عن طريقها بدلا من إطفائها عن طريق null وهذه هي أهم خطوة، وفي السطر


http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

وهذا السطر مهم اذا كنت تستخدم طريقة POST في طلب المعلومات عن طريق forms

اللمسات الأخبرة...

كود:
function handleResponse() { 
if(http.readyState == 4 && http.status == 200){ 
// نعطي المتغير response النص اللذي رجع من طلبنا لصفحة ال php
var response = http.responseText;
if(response) {
// نحدث محتوى ال div والتي اسمها ajaxTest
document.getElementById("ajaxTest").innerHTML = response;
}
}
}

أول ما نتحقق عندما تطلب هذه الدالة هي http.readyState و http.status وسأشرح الحالات المختلفة لكل منهما

هناك 5 أنواع من حالات الأستعداد للXMLHttpRequest وللعلم أن الحالة الأخيرة هي الأهم بينهم
0: لم يتم البدء
1: بدء عملية الاتصال
2: تم استلام الطلب
3: جاري تحليل الطلب والرد عليه
4: تم الانتهاء

أما http.status فكما تعرفون هناك حالات كثيرة عندما تطلب المعلومات ولعل من أشهرها حالة 404 وهي خطأ عدم وجود الصفحة على الخادم، أما 200 فأن الصفحة موجودة وتم استلامها بنجاح ولمعرفة الحالات المتنوعة عند طلب الصفحة الرجاء زيارة الرابط التالي:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

وعندما بتم التأكد من كل شيء بحالة سليمة نسمي متغير جديد باسم response ونعطيه http.responseText وهذا هو الرد من طلبنا لصفحة الphp أي أنه أي نص يتم طبعه على الصفحة عن الانتهاء من طلبها، ويجب التنويه هنا انه هناك نوعان من الردود، responseText و responseXML ولكننا هنا نأخذ فقط النص الذي رجع إلينا من طلب صفحة الphp في السابق، وربما سأشرح كيفية التعامل مع الردود بالXML لاحقا.

وبعد هذا وعندما يتم التأكد أن المتغير response يحمل نصا وليس فارغا يتم أخذ هذا النص ووضعه في الDiv التي اسمها ajaxTest.
نهاية الدرس
وقد حملت بعض الأمثلة لرؤية كيفية عمل الأجاكس وللإستفادة المطلقة من هذا الدرس
المثال الأول: استخدام طريقة GET
http://www.devpedia.org/articles/exa...s/demoGet.html
المثال الثاني: استخدام طريقة POST
http://www.devpedia.org/articles/exa.../demoPost.html

وبهذا تم الانتهاء من أول درس في الأجاكس والXMLHttpRequest وأتمنى من الله أن أكون قد وفقت في هذا الدرس وتكونوا قد استفدتم منه.



كتبه Bo3oof





من مواضيع ADMIN في المنتدى
__________________


دليل مواقع ابن الخليج
خدمة google page rank مقدمه من ابن الخليج
خدمه اختصار الروابط

الآن تستطيع جلب كل ستايلات المنتدى للمجلة ومن غير اي تدخل شخصي منك فقط بـ 120 ريال

اطلب منتج بالضغط هنا


"من هارون أمير المؤمنين إلى نقفور كلب الروم، قد قرأت كتابك يا ابن الكافرة، والجواب ما تراه دون أن تسمعه، والسلام"

اين نحن من هذه الرساله؟

التعديل الأخير تم بواسطة : ADMIN بتاريخ 10-30-2006 الساعة 10:15 مساءً.

ADMIN غير متواجد حالياً   رد مع اقتباس
قديم 10-21-2006, 09:38 مساءً   #2 (permalink)
اسرة ابن الخليج
 
الصورة الرمزية مبحرفى ذكرياتي
 
تاريخ التسجيل: Jun 2006
الدولة: ذكرياتي
المشاركات: 1,946
معدل تقييم المستوى: 1563 مبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيط
مشاركة: مقدمة في الأجاكس والـ XMLHttpRequest

بارك الله فيك أخوي Admin
وكل عام وأنت بخير





من مواضيع مبحرفى ذكرياتي في المنتدى
__________________
مبحرفى ذكرياتي
مبحرفى ذكرياتي غير متواجد حالياً   رد مع اقتباس
قديم 10-31-2006, 02:43 صباحاً   #3 (permalink)
عضو فعــال
 
تاريخ التسجيل: Jul 2006
الدولة: maroc
المشاركات: 170
معدل تقييم المستوى: 683 proginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيطproginfo نشيط
إرسال رسالة عبر مراسل MSN إلى proginfo إرسال رسالة عبر مراسل Skype إلى proginfo
رد: مقدمة في الأجاكس والـ XMLHttpRequest

بارك الله فيك اخى ادمن على هدا الشرح القيم





من مواضيع proginfo في المنتدى
proginfo غير متواجد حالياً   رد مع اقتباس
قديم 11-24-2006, 08:12 مساءً   #4 (permalink)
عضو جديد
 
تاريخ التسجيل: Jul 2006
المشاركات: 5
معدل تقييم المستوى: 10 Mellali يستاهل ترحيب
رد: مقدمة في الأجاكس والـ XMLHttpRequest

شكرا جزيلا اخي الكريم





من مواضيع Mellali في المنتدى
    Mellali غير متواجد حالياً   رد مع اقتباس
    قديم 11-26-2006, 09:27 مساءً   #5 (permalink)
    عضو فعــال
     
    تاريخ التسجيل: Oct 2006
    المشاركات: 186
    معدل تقييم المستوى: 159 alwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيطalwwla نشيط
    رد: مقدمة في الأجاكس والـ XMLHttpRequest

    الله يعطيك العاااافية أخوي أدمن عيني عليك باااردة تحيااااتي لشخصكم الكريم
    دمت بود وسعادة





    من مواضيع alwwla في المنتدى
    __________________
    اقتباس:
    فكر بالنجاااااح
    وفكر بتبادل الأعلان معانا منتديات الطير
    http://www.alteerww.com/vb/index.php
    تحياااااااااتي للجميع ....
    alwwla غير متواجد حالياً   رد مع اقتباس
    قديم 03-05-2007, 08:26 مساءً   #6 (permalink)
    عضو مستمر
     
    الصورة الرمزية lion3
     
    تاريخ التسجيل: Mar 2006
    المشاركات: 73
    معدل تقييم المستوى: 17 lion3 يستاهل ترحيب
    رد: مقدمة في الأجاكس والـ XMLHttpRequest

    يسلموووووووووووووووووووووو اخوى



























    من مواضيع lion3 في المنتدى
    lion3 غير متواجد حالياً   رد مع اقتباس
    رد

    العبارات الدلالية
    مقدمة, الأجاكس



    الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
     
    أدوات الموضوع
    طرق مشاهدة الموضوع

    تعليمات المشاركة
    لا تستطيع إضافة مواضيع جديدة
    لا تستطيع الرد على المواضيع
    لا تستطيع إرفاق ملفات
    لا تستطيع تعديل مشاركاتك

    BB code is متاحة
    كود [IMG] متاحة
    كود HTML معطلة
    Trackbacks are متاحة
    Pingbacks are متاحة
    Refbacks are متاحة

    المواضيع المتشابهه
    الموضوعكاتب الموضوعالمنتدىمشاركاتآخر مشاركة
    الدولة الأمويةADMINشخصية و تاريخ2306-01-2008 11:36 مساءً
    صيانة المذر بورد بالنسبه للمبتدئينولد السلطنةدروس انظمة تشغيل و هاردوير و شبكات805-08-2008 07:09 مساءً
    جهاد الإسلاميين في فلسطينSniper deathشخصية و تاريخ004-15-2008 10:43 مساءً
    اكبر مكتبة لطب الاعشابADMINاسرة و مجتمع1412-11-2006 02:24 مساءً
    [دراسة] حول ادعاء تحريف الكتاب المقدسADMINحوارات ثقافية عامة609-09-2006 01:38 صباحاً


    منتديات شبكة ابن الخليج

    ثقافة وعلوم زينب قصص الخادمات كتاب و كتب ملابس امراض وراثيه خل التفاح لجمالك وصحتك بسبوسه صور لاهشر الرياضيين اخبار رياضية الدوري الأسبانيالدوري الإيطاليالدوري البرتغالي Lamborghini حقائق غريبة العاب و مسابقات ثقافية برامج الصور اخرى برامج هامة برامج حماية الاهل برامج مجانية طلبات المساعدة وتبادل الخبرات صور ممثلين افلام عربية افلام رعب احدث المسلسلات انمي 2007 العاب العاب فلاشيه الدريم كاست رسوم و جرافيكس صور اسلاميه كاميرات رقمية وتقنية صور Nokia 6220 6610 مسجات جديدة دروس في المصطلحات دروس Corel Draw دروس فوتوشوب للمبتدئين دروس ايميج ريدي Adobe ImageReadyدروس افتر افكت Adobe After Effect دروس ادوبي بريمر دروس الاشكال خامات Cinema 4D دروس ثري دي ماكس دروس سوبش Swish دروس صفحات الأنماط الانسيابية دروس Outlook Express دروس وندوز لينكس وندوز WINDOWS دروس علمية هاكات وشروحات vBulletin 3.7.Xهاكات وشروحات vBulletin 3.[6-5].Xقسم ستايلات vBulletinمجلة المنتديات mkPortalقسم ستايلات مجلة المنتديات mkPortal Stylesسكربتات وادوات تطوير المواقعمشاكل وحلول الـ مواقعتبادل إعلاني و تجاري

    اكثر الكلمات بحثاً



    الساعة تعتمد على توقيت جرينتش +3. الساعة الآن 05:45 مساءً.
    Search Engine Optimization by vBSEO 3.1.0

    Valid XHTML 1.0 Transitional Valid CSS!Powered by vBulletin® Version 3.7.1,
    Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
    Feeds:   XML   JS   RSS   RSS Feed 
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63