صفحة 1 من 9 123456 ... الأخيرةالأخيرة
النتائج 1 إلى 15 من 131

الموضوع: شرح استخدام تقنية AJAX لبناء تطبيقات الويب التفاعلية

  1. #1
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,454

    شرح استخدام تقنية AJAX لبناء تطبيقات الويب التفاعلية



    السلام عليكم ورحمة الله وبركاته

    أسعد الله أوقاتكم بكل خير ... هذه المرة سأبادر بشرح تقنية AJAX التي تعتبر جديدة نوعا ما .. ولن انتظر حتى نراها تستخدم في التطبيقات والسكربتات الاجنبية ... أيضا من باب تحفيزكم لاستخدامها في برامجكم الجديدة ان شاء الله.

    تعريفها:
    AJAX اختصار لعبارة Asynchronous JavaScript and XML وتتكون من التقنيات التالية:
    • HTML أو XHTML و CSS لعرض المعلومات
    • Document Object Model لعرض والتفاعل مع المعلومات المعروضة من خلال JavaScript
    • كائن XMLHttpRequest لتبادل البيانات بشكل متزامن مع المزود او الخادم.
    • تقنية XML وهي جزء اختياري لن نحتاج إليه حاليا.


    استخدامها:
    هذه التقنية تستخدم كوسيلة مساعدة في بناء تطبيقات الويب التفاعلية مثلا عند الحاجة لإرسال او جلب بيانات بدون إعادة تحميل الصفحة. ويمكن استخدامها على أيٍ متصفح يدعم التقنيات المذكورة سابقا وتشمل Internet Explorer و FireFox و Opera وغيرها.

    مثال عملي:
    سنقوم بإنشاء تطبيق يقوم بجلب بيانات من قاعدة بيانات MySQL بناءا على اختيار المستخدم ومن ثم عرضها له بدون إعادة تحميل الصفحة.

    يتكون المثال الذي سنقوم بتطبيقه من ثلاث ملفات:
    • ملف index.html ويستخدم لعرض البيانات للمستخدم.
    • ملف test.php ويستخدم لجلب البيانات من قاعدة البيانات.
    • ملف main.js ويحتوي على دوال الاتصال بالخادم وجلب البيانات وعرضها


    ملف index.html
    كود HTML:
    <html>
    <head>
    <title>تجربة</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
    <script src="main.js"></script>
    </head>
    
    <body>
    <form name="myform">
    <select name="myselect" onChange="getInfo()">
    <option value="" selected="selected">اختر رقما</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    </form>
    <div id="mydiv"></div>
    </body>
    </html>
    ملف main.js
    كود HTML:
    var http = createRequestObject();
    function createRequestObject(){
        var request_;
        var browser = navigator.appName;
        if(browser == "Microsoft Internet Explorer"){
            request_ = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else{
            request_ = new XMLHttpRequest();
        }
        return request_;
    }
    function getInfo(){
        http.open('get', 'test.php?id='+ document.myform.myselect.selectedIndex);
        http.onreadystatechange = handleInfo;
        http.send(null);
    }
    function handleInfo(){
        if(http.readyState == 1){
            document.getElementById('mydiv').innerHTML = 'جاري جلب البيانات...';
        }
        if(http.readyState == 4){
            var response = http.responseText;
            document.getElementById('mydiv').innerHTML = response;
        }
    }
    ملف test.php
    كود PHP:
    <?php
    header
    ('Content-Type: text/html; charset=windows-1256');

    $id=intval($_GET['id']);
    $dbhost="localhost";
    $dbuser="root";
    $dbpass="";
    $database="test";
    $link = @mysql_connect$dbhost$dbuser$dbpass );
    $db = @mysql_select_db$database,$link );
    $result mysql_query("SELECT * FROM mytable WHERE id=$id");
    while ( 
    $row mysql_fetch_array($result) ){
        echo 
    $row['name'];

    }
    mysql_free_result($result);
    mysql_close($link);
    ?>
    تركيزنا على ملف main.js وهو يتكون من ثلاثة دوال:
    دالة createRequestObject لانشاء كائن الاتصال بالخادم.
    دالة getInfo لارسال البيانات إلى ملف test.php
    دالة handleInfo وهي دالة مساعدة لدالة getInfo وتقوم بعرض البيانات بعد جلبها

    في الغالب لن تحتاج للتعديل على دالة createRequestObject
    قم بالتعديل فقط في دالتي getInfo و handleInfo ولك ان تسميها كما تشاء
    التعديل الذي ستحتاجه في دالة getInfo
    • اسم ملف php الذي نستخدمه لعرض البيانات
    • اسم النموذج في صفحة HTML وهو في المثال الحالي myform
    • اسم صندوق القائمة المنسدلة وهو في المثال الحالي myselect

    نلاحظ أن هذا التغيير سيكون في السطر التالي
    كود HTML:
    http.open('get', 'test.php?id='+ document.myform.myselect.selectedIndex);
    التعديل الذي ستحتاجه في دالة handleInfo
    • اسم وسم div الذي ستسخدمه لعرض البيانات وهو في المثال الحالي mydiv

    نلاحظ ان هذا التغيير سيكون في السطرين التاليين:
    كود HTML:
    document.getElementById('mydiv').innerHTML = 'جاري جلب البيانات...';
    
    document.getElementById('mydiv').innerHTML = response;
    أيضا لاتنسى ان تعدل في ملف test.php حسب إعدادات قاعدة البيانات لديك والمعلومات التي تريد عرضها.

    لمشاهدة هذا المثال حيا على الهواء مباشرة :nice: اضغط هنا
    http://www.aknet.com/ajax/
    يوجد في المرفقات ملف مضغوط يحتوي على كامل ملفات هذا التطبيق.


    تحياتي وتقديري لكم
    أخوكم بدر
    4/7/1426 هـ





    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip ajax.zip‏ (1.5 كيلوبايت, 3772 مشاهدات)
    __________________
    شبكة مملكة العرب
    ---------------------
    استضافة مواقع تبدأ من 100 ريال سنويا
    خطط خاصة للموزعين
    سكربت دليل المواقع
    www.aknet.com


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2003
    المشاركات
    303


    الله يعطيك العافية يا شيخ

    شرحٌ وافٍ كافٍ ..

    الله يوفقك دنيا و آخرة ..





    __________________
    إن كانَ عندك يا زمانُ بقيّةً
    ممّا يُهان بها الكرامُ فهاتها !
    __________
    يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2005
    المشاركات
    182


    الف شكر لك اخي على الشرح الواضح الجميل
    ممكن اني استفيد منه :nice:

    تحياتي






  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


    بارك الله فيك

    كنت ناوي أفتح موضوع أتحدث فيه عن هالتقنية العجيبة

    وفقت في شرحك الله يجزاك خير

    هالتقنية هي المطبقة في إصدارات منتدى ال VB و IB الحديثة وقرأت في البولق الشخصي لمبرمج بريطاني إن موقع Gmail كان أول تطبيق لها :con2: وما أدري عن صحة المعلومة

    بس تقنية رائعة جدا تخيل كل تطبيقات الإنترنت تستخدمها ؟ راح تحفظ موارد النظام على السيرفر وتسرع تفاعل الموقع مع الزائر

    ياليت الخبراء يتوسعون بالموضوع أكثر وموضوع يستحق التثبيت





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2003
    المشاركات
    746


    عجيب المواضيع المفيدة تحت !!
    جزاك الله خير اخوي






  6. #6
    عضو فعال
    تاريخ التسجيل
    Aug 2004
    المشاركات
    1,974


    ممتاز جدا....


    شكرا لك على الشرح...





    __________________
    انا أريد وأنت تريد والله يفعل مايريد!

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2002
    المشاركات
    889


    موضوع مميز :nice:
    ما قرأت كل الموضوع، سأراجعه
    مشكور وعاشت ايديك وجزاك الله خير الجزاء
    أرجو التثبيت






  8. #8


    اقتباس المشاركة الأصلية كتبت بواسطة code4arab
    جربت ان اعرض بيانات مخزنة باللغة العربية ولكن حدث خطأ ومازال البحث جاري عن طريقة التعامل مع اللغات الاخرى ومنها العربية
    استخدم ترميز UTF-8 ولن تواجهك مشاكل بإذن الله


    بالنسبة لدالة CreateRequestObject في ملف الجافاسكربت، من الممكن استخدام:
    كود:
    //From: http://www.webpasties.com/xmlHttpRequest
    function createRequestObject()
    {
     var xmlhttp;
      /*@cc_on
    
      @if (@_jscript_version >= 5)
    
        try {
    
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    
        } catch (e) {
    
          try {
    
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    
          } catch (E) {
    
            xmlhttp = false;
    
          }
    
        }
    
      @else
    
      xmlhttp = false;
    
      @end @*/
    
     if(!xmlhttp && typeof XMLHttpRequest != 'undefined')
     {
      try
      {
       xmlhttp = new XMLHttpRequest();
    
      }
      catch(e)
      {
       xmlhttp = false;
      }
    
     }
    
     return xmlhttp;
    }
    والتي أعتقد أنها أفضل من الموجودة (رأي شخصي)





    __________________
    ArabBB ... SoooooN!

  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    Jan 2005
    المشاركات
    746


    ياسلام عليك اخوووي بدر .........مشكووور على الموضوع الرائع






  10. #10
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,454


    omars >>> الله يعافيك وجزاك الله خير على الدعاء الطيب ولك بمثله

    sobhi85 >>> العفو وان شاء الله راح تستفيد منه

    شــــــامل >>> وياك يارب وفعلا موضوع شيّق ويستحق المناقشة

    aldosari >>> يمكن الشباب ما انتبهوا للموضوع او مافهموه من عنوانه ... اهم شي انه يكون نقطة بداية لمحبي تطوير الويب العرب بمواكبة احدث التقنيات

    f555f >>> العفو اخوي وان شاء الله تكون استفدت ونشوف تطبيقاتك للدرس قريبا

    haidar >>> العفو وجزاك الله خير ... لا تنس ترجع وتكمل بقية الدرس

    Al Mobarmeg المبرمج >>> ترميز UTF-8 خيار اكيد وسيعمل لا محالة لكن معظم بيانات المواقع العربية تكون مخزنة في قواعد البيانات بترميز windows-1256 والافضل ان نبحث عن طريقة لعرضها بهذا الترميز.

    seifss >>> الله يسلمك .. تمنياتي لك بالفائدة دوما





    __________________
    شبكة مملكة العرب
    ---------------------
    استضافة مواقع تبدأ من 100 ريال سنويا
    خطط خاصة للموزعين
    سكربت دليل المواقع
    www.aknet.com

  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    643


    مشكور اخوي بدر على الشرح

    وبصراحة تقنية ممتازة ... وتوفر الوقت

    ومفيدة خاصة لأصحاب الاتصال الهاتفي





    __________________
    تفضل بزيارة مدونتي:
    http://www.i3ziz.com

    للمراسلة:
    http://illusion.arabform.com

  12. #12
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2005
    المشاركات
    956


    الف الف الف شكر على الشرح المميز والتوضيح يا code4arab
    وجارى العمل ...................................
    :app:





    __________________
    Ramy AlNemr
    Another look for creativity
    Change your life
    965/55905925-50624462
    waiak@msn.com

  13. #13
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    107


    ماشاء الله تبارك الله

    جهد متميز يا بدر

    الله يعطيك العافية





    __________________
    مبرمج جافا

    JSP

    جافا سيرفلت

    لمرسلتي

    http://ibh3000.arabform.com

  14. #14
    عضو نشيط جدا
    تاريخ التسجيل
    Oct 2003
    المشاركات
    437


    اقتباس المشاركة الأصلية كتبت بواسطة code4arab
    السلام عليكم ورحمة الله وبركاته

    أسعد الله أوقاتكم بكل خير ... هذه المرة سأبادر بشرح تقنية AJAX التي تعتبر جديدة نوعا ما .. ولن انتظر حتى نراها تستخدم في التطبيقات والسكربتات الاجنبية ... أيضا من باب تحفيزكم لاستخدامها في برامجكم الجديدة ان شاء الله.

    تعريفها:
    AJAX اختصار لعبارة Asynchronous JavaScript and XML وتتكون من التقنيات التالية:
    • HTML أو XHTML و CSS لعرض المعلومات
    • Document Object Model لعرض والتفاعل مع المعلومات المعروضة من خلال JavaScript
    • كائن XMLHttpRequest لتبادل البيانات بشكل متزامن مع المزود او الخادم.
    • تقنية XML وهي جزء اختياري لن نحتاج إليه حاليا.


    استخدامها:
    هذه التقنية تستخدم كوسيلة مساعدة في بناء تطبيقات الويب التفاعلية مثلا عند الحاجة لإرسال او جلب بيانات بدون إعادة تحميل الصفحة. ويمكن استخدامها على أيٍ متصفح يدعم التقنيات المذكورة سابقا وتشمل Internet Explorer و FireFox و Opera وغيرها.

    مثال عملي:
    سنقوم بإنشاء تطبيق يقوم بجلب بيانات من قاعدة بيانات MySQL بناءا على اختيار المستخدم ومن ثم عرضها له بدون إعادة تحميل الصفحة.

    يتكون المثال الذي سنقوم بتطبيقه من ثلاث ملفات:
    • ملف index.html ويستخدم لعرض البيانات للمستخدم.
    • ملف test.php ويستخدم لجلب البيانات من قاعدة البيانات.
    • ملف main.js ويحتوي على دوال الاتصال بالخادم وجلب البيانات وعرضها


    ملف index.html
    كود HTML:
    <html>
    <head>
    <title>تجربة</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
    <script src="main.js"></script>
    </head>
    
    <body>
    <form name="myform">
    <select name="myselect" onChange="getInfo()">
    <option value="" selected="selected">اختر رقما</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    </form>
    <div id="mydiv"></div>
    </body>
    </html>
    ملف main.js
    كود HTML:
    var http = createRequestObject();
    function createRequestObject(){
        var request_;
        var browser = navigator.appName;
        if(browser == "Microsoft Internet Explorer"){
            request_ = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else{
            request_ = new XMLHttpRequest();
        }
        return request_;
    }
    function getInfo(){
        http.open('get', 'test.php?id='+ document.myform.myselect.selectedIndex);
        http.onreadystatechange = handleInfo;
        http.send(null);
    }
    function handleInfo(){
        if(http.readyState == 1){
            document.getElementById('mydiv').innerHTML = 'جاري جلب البيانات...';
        }
        if(http.readyState == 4){
            var response = http.responseText;
            document.getElementById('mydiv').innerHTML = response;
        }
    }
    ملف test.php
    كود PHP:
    <?php
    $id
    =intval($_GET['id']);
    $dbhost="localhost";
    $dbuser="root";
    $dbpass="";
    $database="test";
    $link = @mysql_connect$dbhost$dbuser$dbpass );
    $db = @mysql_select_db$database,$link );
    $result mysql_query("SELECT * FROM mytable WHERE id=$id");
    while ( 
    $row mysql_fetch_array($result) ){
        echo 
    $row['name'];

    }
    mysql_free_result($result);
    mysql_close($link);
    ?>
    تركيزنا على ملف main.js وهو يتكون من ثلاثة دوال:
    دالة createRequestObject لانشاء كائن الاتصال بالخادم.
    دالة getInfo لارسال البيانات إلى ملف test.php
    دالة handleInfo وهي دالة مساعدة لدالة getInfo وتقوم بعرض البيانات بعد جلبها

    في الغالب لن تحتاج للتعديل على دالة createRequestObject
    قم بالتعديل فقط في دالتي getInfo و handleInfo ولك ان تسميها كما تشاء
    التعديل الذي ستحتاجه في دالة getInfo
    • اسم ملف php الذي نستخدمه لعرض البيانات
    • اسم النموذج في صفحة HTML وهو في المثال الحالي myform
    • اسم صندوق القائمة المنسدلة وهو في المثال الحالي myselect

    نلاحظ أن هذا التغيير سيكون في السطر التالي
    كود HTML:
    http.open('get', 'test.php?id='+ document.myform.myselect.selectedIndex);
    التعديل الذي ستحتاجه في دالة handleInfo
    • اسم وسم div الذي ستسخدمه لعرض البيانات وهو في المثال الحالي mydiv

    نلاحظ ان هذا التغيير سيكون في السطرين التاليين:
    كود HTML:
    document.getElementById('mydiv').innerHTML = 'جاري جلب البيانات...';
    
    document.getElementById('mydiv').innerHTML = response;
    أيضا لاتنسى ان تعدل في ملف test.php حسب إعدادات قاعدة البيانات لديك والمعلومات التي تريد عرضها.

    لمشاهدة هذا المثال حيا على الهواء مباشرة :nice: اضغط هنا
    http://www.aknet.com/ajax/
    يوجد في المرفقات ملف مضغوط يحتوي على كامل ملفات هذا التطبيق.

    جربت ان اعرض بيانات مخزنة باللغة العربية ولكن حدث خطأ ومازال البحث جاري عن طريقة التعامل مع اللغات الاخرى ومنها العربية

    تحياتي وتقديري لكم
    أخوكم بدر
    4/7/1426 هـ

    رائع بمعنى الكلمة


    ابداع وتميز اخي الكريم

    سوف اقوم ان شاء الله بتجربته عند حصولي للوقت الكافي
    جزاك الله خيرا






  15. #15
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    روعة أخي الكريم ..

    ولكن لي استفسار .. حول هذه التقنية ..

    هل لك ان تخبرنا عن طرق أخرى في الجلب من قاعدة البيانات ؟؟

    لأني ناوي استخدم هذه التقنية في موقعي ..

    فهي جميلة جداً..وأكثر من رائعة ..







    وخالص المودة ،،





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور





ضوابط المشاركة

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض